我试着创建一个文件,写进去,然后读出来。我试图使用w+模式,但输出会给出无限行的空值。我做错什么了?

 int main() {
    FILE *fPointer;
    char line[10];

    fPointer = fopen("newFile.txt","w+");
    fprintf(fPointer, "Hello\nWorld\n!");

    while (!feof(fPointer)) {
        fgets(line, 10, fPointer);
        puts(line);
    }

    fclose(fPointer);

    return 0;
}

最佳答案

您违反了C标准的7.21.5.3 The fopen function, paragraph 7
以更新模式打开文件时('+'作为第二个或第三个
以上模式参数值列表中的字符),输入和
可以对相关联的流执行输出。但是,输出
不应在没有中间呼叫的情况下直接输入
fflush函数或文件定位函数(fseek,fsetpos,
或倒带),输入后不能直接输出
对文件定位函数的中间调用,除非输入
操作遇到文件结尾。
这可能解释了为什么while (!feof(fPointer))循环没有终止。尽管你的用法不正确,但它通常会终止。忽略fgets()中的返回值(在忽略的所有其他返回值中),可能会丢失正在返回的错误。
由于您没有提供有关实现的任何详细信息,因此外部观察者不可能确切地知道。

关于c - C-创建文件时使用“w +”模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51734664/

10-12 17:02