📜  C中的EOF,getc()和feof()

📅  最后修改于: 2021-05-26 03:13:41             🧑  作者: Mango

在C / C++中,到达文件末尾时,getc()返回EOF。如果失败,getc()也会返回EOF。因此,仅将getc()返回的值与EOF进行比较不足以检查文件的实际结尾。为了解决这个问题,C提供了feof(),仅当到达文件末尾时它才返回非零值,否则返回0。
例如,考虑使用下面的C程序在屏幕上打印文件test.txt的内容。在程序中,首先将getc()的返回值与EOF进行比较,然后使用feof()进行另一次检查。通过选中此复选框,我们确保仅在到达文件末尾时,程序才打印“文件末尾”。如果getc()由于任何其他原因返回EOF,则程序将显示“出了点问题”

#include 
  
int main()
{
  FILE *fp = fopen("test.txt", "r");
  int ch = getc(fp);
  while (ch != EOF) 
  {
    /* display contents of file on screen */ 
    putchar(ch); 
  
    ch = getc(fp);
  }
    
  if (feof(fp))
     printf("\n End of file reached.");
  else 
     printf("\n Something went wrong.");
  fclose(fp);
      
  getchar();
  return 0;
}
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。