1
6
是否有用 一般来说 取决于实施情况。C和C++并没有指定这样的操作必须成功,尽管POSIX确实如此,正如您所知。然而,即使在非POSIX C中,
( C2011 7.21.9.2/2 ),和
(
C2011 7.21.9.2/5
). 这些副作用可能是可取的,即使
表明你可能认为
制作
|
2
5
如您所知,在可写文件的结尾之外查找,然后写入,会扩展文件。我想你的问题是,你不想扩展一个只开放阅读的文件,因为扩展是一种修改。 但是仅仅在一个可写文件的末尾之外寻找并不能扩展它--它正在寻找 然后写 . 查找只设置读/写点。 因此,在读取时查找文件末尾以外的内容会设置读取点,这只是数据结构中的一个数字,所以我想没有人担心检查它的有效性。如果您在可读文件的结尾之外进行查找,然后尝试写入,则会出现错误(“文件未打开以进行写入”),如果您在可读文件的结尾之外进行查找,然后进行读取,则只会得到EOF。在这两种情况下,您都不会扩展或更改文件。 (您可能还想知道,如果您在某个其他进程正在写入的可读文件的结尾之外进行查找,然后该其他进程再写入一些内容以“填充”到您想要的位置,会发生什么情况,以及 然后 你想读书吗?这是一个有趣的问题。我怀疑它会起作用,但我还没有试过。) |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |