EOF, getc() y feof() en C

En C/C++, getc() devuelve EOF cuando se alcanza el final del archivo. getc() también devuelve EOF cuando falla. Por lo tanto, solo comparar el valor devuelto por getc() con EOF no es suficiente para verificar el final real del archivo. Para resolver este problema, C proporciona feof() que devuelve un valor distinto de cero solo si se ha llegado al final del archivo; de lo contrario, devuelve 0.
Por ejemplo, considere el siguiente programa C para imprimir el contenido del archivo test.txt en la pantalla. En el programa, el valor devuelto de getc() se compara primero con EOF, luego hay otra verificación usando feof(). Al poner esta marca, nos aseguramos de que el programa imprima «Fin de archivo alcanzado» solo si se alcanza el final del archivo. Y si getc() devuelve EOF por cualquier otra razón, entonces el programa imprime«Algo salió mal»

#include <stdio.h>
  
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;
}

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *