使用fputs写入文件

时间:2019-06-07 15:25:02

标签: c linux

我有以下简单代码:

#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,因为它刚刚被写入文件。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

如果要随机读取,首先必须告诉文件读取例程,从何处开始。

使用fseek执行此操作。

例如:fseek(pFile, 0, SEEK_SET),然后再尝试使用fgets获得帮助。

答案 1 :(得分:1)

来自cppreference

  

在更新模式('+')中,可以同时执行输入和输出,但是在没有介入fflush,fseek,fsetpos或rewind的情况下,输入之后不能跟随输入,并且在没有介入的情况下输入也不能跟随输出调用fseek,fsetpos或rewind,除非输入操作遇到文件结尾。

在写作和阅读之间,您没有做任何事情。