[英]Can I write to a new file, then read from that file within the same C program?
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*/ }
我究竟做错了什么? 如果我写入的文件尚不存在,以后是否可以读取该文件?
你应该rewind
或fseek
再次读数。 并且,请不要将变量称为new
(因为这是C ++关键字)。
您需要执行一些操作以更改写入和读取之间的模式。 fseek
是可能的。
在打开以进行更新(读+写)的流上,对fseek的调用允许在读和写之间切换。
fsetpos
和rewind
工作也是如此。
您已在w+
模式下打开文件,该模式在附加模式下可读写。 在执行fprintf()命令后,文件指针位于文件的末尾,这意味着除EOF外没有其他要读取的内容。 您必须fseek()
到文件中的另一点,或rewind()
到开头。
在这里看看。 他们建议您检查errno
。 您可以使用
perror("Fgets failed");
打印完整的错误消息。
问题:从写入更改为读取(始终)时需要调用fseek
。
fseek(new, 0, SEEK_SET);
倒带文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.