0

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

4

1 回答 1

1

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

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

如果文件以“a+b”模式打开,fseek() 是否将文件指针移动到文件的开头?参考 C 标准的适当部分。

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

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

fseek(f, 0, SEEK_END)

希望能帮助到你..

于 2013-04-05T05:10:04.347 回答