我可以写入一个新文件,然后在同一个C程序中读取该文件吗?

问题描述:

FILE *new = fopen("new.out", "w+"); // creates a new file that didnt exist before 
char finput[50]; 

fprintf(new, "hello\nworld\n"); 

while(fgets(finput, 51, new) != NULL) 
{ /*never reaches this point*/ } 

我在做什么错?如果我写入一个尚不存在的文件,稍后有可能从该文件读取吗?我可以写入一个新文件,然后在同一个C程序中读取该文件吗?

你应该在rewindfseek再次阅读。请不要调用变量new(因为这是一个C++关键字)。

你需要做一些改变写和读模式。 fseek是一种可能性。

在打开更新(读取+写入)的流上,调用fseek允许在读取和写入之间切换。

fsetposrewind也适用。

您已经以w+模式打开文件,该文件在附加模式下可读写。在你的fprintf()命令之后,文件指针位于文件的结尾处,这意味着除EOF外没有其他东西可读。你必须fseek()到文件中的另一个点,或者rewind()到一开始。

看一看here。他们建议您检查错误errno。您可以使用

perror("Fgets failed"); 

打印完整的错误消息。

问题:从写入变为读取时(总是),您需要调用fseek

fseek(new, 0, SEEK_SET); 

倒带文件。