我有以下简单代码:
#include <stdio.h>
int main(){
char buffer[20] = "abc";
FILE *pFile;
pFile = fopen("myfile1.txt", "r+");
fputs("def", pFile);
fgets(buffer, 20, pFile);
printf("buffer content: %s\n", buffer);
fclose(pFile);
return 0;
}
输出为:buffer content: abc
,而不是def
,因为它刚刚被写入文件。有人可以解释一下吗?
答案 0 :(得分:2)
如果要随机读取,首先必须告诉文件读取例程,从何处开始。
使用fseek
执行此操作。
例如:fseek(pFile, 0, SEEK_SET)
,然后再尝试使用fgets
获得帮助。
答案 1 :(得分:1)
来自cppreference:
在更新模式('+')中,可以同时执行输入和输出,但是在没有介入fflush,fseek,fsetpos或rewind的情况下,输入之后不能跟随输入,并且在没有介入的情况下输入也不能跟随输出调用fseek,fsetpos或rewind,除非输入操作遇到文件结尾。
在写作和阅读之间,您没有做任何事情。