Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用FGET时,EOF不起作用_C_File - Fatal编程技术网

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)