Partager via


feof

Teste la fin de fichier sur un flux.

Syntaxe

int feof(
   FILE *stream
);

Paramètres

stream
Pointeur vers la structure FILE .

Valeur retournée

La fonction feof retourne une valeur différente de zéro si une opération de lecture a tenté de lire au-delà de la fin du fichier ; sinon, elle retourne 0. Si le pointeur de flux est NULL, la fonction appelle le gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à se poursuivre, errno a la valeur EINVAL, et feof retourne 0.

Pour plus d’informations sur les codes de retour, consultez , , _sys_errlist_doserrnoet _sys_nerr.errno

Notes

La routine feof (implémentée à la fois en tant que fonction et que macro) détermine si la fin de stream a été passée. Quand la fin du fichier est passée, les opérations de lecture retournent un indicateur de fin de fichier jusqu’à ce que le flux soit fermé ou que rewind, fsetpos, fseek ou clearerr soit appelé sur lui.

Par exemple, si un fichier contient 10 octets et que vous lisez 10 octets à partir du fichier, feof retourne 0 car, même si le pointeur du fichier se trouve à la fin du fichier, vous n’avez pas tenté de lire au-delà de la fin. C’est seulement si vous tentez de lire un 11e octet que feof retourne une valeur différente de zéro.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Fonction En-tête requis
feof <stdio.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_feof.c
// This program uses feof to indicate when
// it reaches the end of the file CRT_FEOF.TXT. It also
// checks for errors with ferror.
//

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   int  count, total = 0;
   char buffer[100];
   FILE *stream;

   fopen_s( &stream, "crt_feof.txt", "r" );
   if( stream == NULL )
      exit( 1 );

   // Cycle until end of file reached:
   while( !feof( stream ) )
   {
      // Attempt to read in 100 bytes:
      count = fread( buffer, sizeof( char ), 100, stream );
      if( ferror( stream ) )      {
         perror( "Read error" );
         break;
      }

      // Total up actual bytes read
      total += count;
   }
   printf( "Number of bytes read = %d\n", total );
   fclose( stream );
}

Entrée : crt_feof.txt

Line one.
Line two.

Sortie

Number of bytes read = 19

Voir aussi

Gestion des erreurs
E/S de flux
clearerr
_eof
ferror
perror, _wperror