Рубрики

EOF, getc () и feof () в C

В C / C ++ getc () возвращает EOF при достижении конца файла. getc () также возвращает EOF в случае сбоя. Таким образом, только сравнение значения, возвращаемого getc () с EOF, недостаточно для проверки фактического конца файла. Чтобы решить эту проблему, C предоставляет функцию feof (), которая возвращает ненулевое значение, только если достигнут конец файла, в противном случае возвращается 0.
Например, рассмотрим следующую программу на C для вывода содержимого файла test.txt на экран. В программе возвращаемое значение getc () сначала сравнивается с EOF, затем выполняется еще одна проверка с использованием feof (). Поставив эту проверку, мы гарантируем, что программа напечатает «Достигнут конец файла», только если достигнут конец файла. И если getc () возвращает EOF по любой другой причине, программа выводит «Что-то пошло не так»

#include <stdio.h>

  

int main()

{

  FILE *fp = fopen("test.txt", "r");

  int ch = getc(fp);

  while (ch != EOF) 

  {

    / * отображать содержимое файла на экране * / 

    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;

}

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

EOF, getc () и feof () в C

0.00 (0%) 0 votes