Udostępnij za pośrednictwem


feof

Testy pod kątem końca pliku w strumieniu.

Składnia

int feof(
   FILE *stream
);

Parametry

stream
Wskaźnik do FILE struktury.

Wartość zwracana

Funkcja feof zwraca wartość niezerową, jeśli operacja odczytu próbowała odczytać po końcu pliku; zwraca wartość 0 w przeciwnym razie. Jeśli wskaźnik strumienia to NULL, funkcja wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, errno jest ustawione na EINVAL i feof zwraca wartość 0.

Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Uwagi

Rutyna feof (zaimplementowana zarówno jako funkcja, jak i makro) określa, czy koniec stream został przekazany. Po przekazaniu końca pliku operacje odczytu zwracają wskaźnik końca pliku, dopóki rewindfsetposfseekstrumień nie zostanie zamknięty lub dopóki strumień , , lub clearerr nie zostanie wywołany względem niego.

Jeśli na przykład plik zawiera 10 bajtów i odczytasz 10 bajtów z pliku, zwróci wartość 0, feof ponieważ mimo że wskaźnik pliku znajduje się na końcu pliku, nie podjęto próby odczytania poza końcem. Dopiero po próbie odczytania 11 bajtu zostanie feof zwrócona wartość niezerowa.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Function Wymagany nagłówek
feof <stdio.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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 );
}

Dane wejściowe: crt_feof.txt

Line one.
Line two.

Wynik

Number of bytes read = 19

Zobacz też

Obsługa błędów
We/Wy strumienia
clearerr
_eof
ferror
perror, _wperror