9

如果使用以下命令打开文件:

FILE *f1=fopen("test.dat","a+");

手册页内容如下:

一个+

打开以进行读取和附加(在文件末尾写入)。如果文件不存在,则创建该文件。读取的初始文件位置在文件的开头,但输出始终附加到文件的末尾。

那么是否f1有 2 个单独的偏移指针,一个用于读取,另一个用于写入?

4

3 回答 3

19

不。

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

于 2010-09-05T05:38:19.707 回答
4

永远不能FILE在没有调用的情况下在 a 上混合读取和写入操作fseek。它可能在某些实现上如您所愿,但依赖于此的程序具有未定义的行为。因此,拥有 2 个职位的问题毫无意义。

于 2010-09-05T14:34:56.357 回答
4

不,它只有一个指针。

于 2010-09-05T05:40:27.140 回答