我试着创建一个文件,写进去,然后读出来。我试图使用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/