feof
Testa la fine del file in un flusso.
Sintassi
int feof(
FILE *stream
);
Parametri
stream
Puntatore alla struttura FILE
.
Valore restituito
La funzione feof
restituisce un valore diverso da zero se un'operazione di lettura ha provato a leggere oltre la fine del file. In caso contrario restituisce 0. Se il puntatore di flusso è NULL
, la funzione richiama il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, errno
viene impostato su EINVAL
e feof
restituisce 0.
Per altre informazioni sui codici restituiti, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Osservazioni:
La routine feof
(implementata come funzione e come macro) determina se è stata passata la fine di stream
. Quando viene passata la fine del file, le operazioni di lettura restituiscono l'indicatore di fine file fino a quando viene chiuso il flusso o fino a quando viene chiamato rewind
, fsetpos
, fseek
o clearerr
.
Ad esempio, se un file contiene 10 byte e si leggono 10 byte dal file, feof
restituirà 0 perché, anche se il puntatore al file si trova alla fine del file, non si è tentato di leggere oltre la fine. Solo dopo il tentativo di leggere l'undicesimo byte, feof
restituirà un valore diverso da zero.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
feof |
<stdio.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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 );
}
Input: crt_feof.txt
Line one.
Line two.
Output
Number of bytes read = 19
Vedi anche
Gestione errori
I/O di flusso
clearerr
_eof
ferror
perror
, _wperror