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
_doserrno
et _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