以“a +”模式打开文件

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

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

手册页内容如下:

A +

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

那么f1有两个独立的偏移指针,一个用于读取,另一个用于写入?

没有。

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

不,它只有一个指针。

永远不能FILE上混合读写操作而不在其间调用fseek 。 它可能在某些实现中按您的意愿工作,但依赖于此的程序具有未定义的行为。 因此,拥有2个职位的问题毫无意义。