C 使用FGET时,EOF不起作用
我尝试用C 使用FGET时,EOF不起作用,c,file,C,File,我尝试用fgets读取整个文件,当我在while循环中使用它时,它永远不会结束。 当我使用fscanf时,一切正常 while((fscanf(f,"%s",ime)) != EOF) { fputs(ime,p); fputc('\n',p); } 但这不起作用,如何修复?我得到无限循环 while((fgets(ime,100,f)) != EOF) { fputs(ime,p); fputc('\n',p);
fgets
读取整个文件,当我在while循环中使用它时,它永远不会结束。
当我使用fscanf
时,一切正常
while((fscanf(f,"%s",ime)) != EOF)
{
fputs(ime,p);
fputc('\n',p);
}
但这不起作用,如何修复?我得到无限循环
while((fgets(ime,100,f)) != EOF)
{
fputs(ime,p);
fputc('\n',p);
}
我应该放什么来代替!=EOF
所以循环在文件中的文本结束时结束?更改为
while((fgets(ime,100,f)) != NULL)
根据手册页
char*fgets(char*s,int-size,FILE*stream)代码>
fgets()在成功时返回s,在错误或结束时返回NULL
在未读取任何字符的情况下发生文件的错误
读这本书真的这么难吗
成功时,函数返回相同的str参数。如果遇到文件结尾且未读取任何字符,则str的内容保持不变,并返回空指针。
如果发生错误,将返回空指针
工作完美!谢谢:)请注意,使用fscanf时,您应该使用==1
,而不是!=EOF
无论如何。这对%s
来说并不重要,但对其他说明符却很重要
char *fgets(char *str, int n, FILE *stream)
while((fgets(ime,100,f)) != NULL)