我试图用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
这样循环在文件结尾时结束?
答案 0 :(得分:9)
真的很难阅读documentation吗?
char *fgets(char *str, int n, FILE *stream)
成功时,该函数返回相同的str参数。如果遇到文件结尾且未读取任何字符,则str的内容保持不变,并返回空指针。 如果发生错误,则返回空指针。
while((fgets(ime,100,f)) != NULL)
答案 1 :(得分:3)
更改为
while((fgets(ime,100,f)) != NULL)
根据手册页
char *fgets(char *s, int size, FILE *stream);
fgets()在成功时返回s,在出错时或结束时返回NULL 在没有读取任何字符时发生文件。