Condividi tramite


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_errliste _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