从使用追加模式打开的文件中读取

时间:2013-04-05 04:38:47

标签: c file fopen fseek

这可能是一个非常愚蠢的问题,但我正在修改其他人的代码,似乎我需要从以追加模式打开的文件中读取。我试着fseek到文件的开头,但没有读到任何内容。 我知道我可以将模式更改为rw,但我想知道为什么fseek无效。在手册页中它确实说写忽略fseek但是没有关于读取的内容。

1 个答案:

答案 0 :(得分:1)

只有一个指针最初位于文件的开头,但是当尝试写入操作时,它会移动到文件的末尾。您可以使用fseek重新定位它或在文件中的任何位置重绕以进行读取,但写入操作会将其移回文件末尾。

在追加模式下打开时,文件指针会在每次写入之前返回到文件末尾。您可以使用fseek重新定位指针以进行读取,但只要调用写入文件的函数,指针就会返回到文件末尾。

Does fseek() move the file pointer to the beginning of the file if it was opened in "a+b" mode?的答案引用了C标准的相应部分。

如果要写入文件中的任意位置,请使用“w +”模式。现有文件将被覆盖。

如果您想最初附加到现有文件,但随后fseek到任意位置,请使用“r +”后跟

fseek(f, 0, SEEK_END)

希望有所帮助......