使用fgets时EOF不起作用

Mil*_*ita -4 c file

我试图读取整个文件fgets,当我在while循环中使用它时,它永远不会结束.当我使用fscanf一切正常.

while((fscanf(f,"%s",ime)) != EOF)
   {
       fputs(ime,p);
       fputc('\n',p);
   }
Run Code Online (Sandbox Code Playgroud)

但这不起作用,如何解决?我得到无限循环

while((fgets(ime,100,f)) != EOF)
    {
        fputs(ime,p);
        fputc('\n',p);
    }
Run Code Online (Sandbox Code Playgroud)

我应该放置什么,!= EOF所以当它是文件中的文本结尾时循环结束?

tka*_*usl 9

阅读文档真的很难吗?

char *fgets(char *str, int n, FILE *stream)
Run Code Online (Sandbox Code Playgroud)

成功时,该函数返回相同的str参数.如果遇到文件结尾且未读取任何字符,则str的内容保持不变,并返回空指针.如果发生错误,则返回空指针.

while((fgets(ime,100,f)) != NULL)
Run Code Online (Sandbox Code Playgroud)