如何在C语言中正确到达文件末尾

如何在C语言中正确到达文件末尾,c,file,C,File,我正在做一个与我的课程相关的C项目。我需要从名为file2.txt的文件中读取单词,该文件的内容: file2.txt: stephen elis elis awkward hello bye stephen ayse goodbye book picture pencil 我正在使用: FILE *file = fopen("file2.txt" , "r"); char word[15]; while(!feof(file)) { fscanf(file,"%s

我正在做一个与我的课程相关的C项目。我需要从名为file2.txt的文件中读取单词,该文件的内容:

file2.txt:

stephen elis elis
awkward
hello bye

stephen ayse
goodbye 
book picture pencil
我正在使用:

FILE *file = fopen("file2.txt" , "r");
char word[15];
while(!feof(file))
    {
        fscanf(file,"%s",word);
        printf("%s" , word);
        printf("\n");

    }
但当这些文字被打印出来时,结果是:

stephen
elis 
elis
awkward
hello
bye
stephen
ayse
goodbye
book
picture
pencil
pencil   --> printed second time
因此,最后一个字印刷了两次,我不明白为什么。请帮助我修复此错误,因为完成此错误的时间有限!
谢谢…

您可以检查fscanf返回值

修复:对不起,应该这样使用:

if (EOF != fscanf(file,"%s",word))
  printf ("%s\n" , word);
编辑:或者更好:

  if (0 < fscanf(file,"%s",word))
      printf ("%s\n" , word);
if(0

由于EOF值为(-1)

决不使用
feof
。。。(还有成百上千的副本)。谢谢你WhozCraig,但我仍然不确定,我也不知道什么是解决我问题的最佳方案,我是C的新手。看到修复,我的答案是sscanf…非常感谢你!我现在工作:)