feof

Test für das Dateiende (End-of-File) in einem Stream.

Syntax

int feof(
   FILE *stream
);

Parameter

Datenstrom
Zeiger auf die FILE-Struktur.

Rückgabewert

Die feof-Funktion gibt einen Wert ungleich 0 (null) zurück, wenn ein Lesevorgang versucht hat, über das Ende der Datei zu lesen. andernfalls wird 0 zurückgegeben. Wenn der Streamzeiger NULL ist, ruft die Funktion den Handler für ungültige Parameter auf, wie unter Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird errno auf EINVAL festgelegt, und feof gibt 0 zurück.

Weitere Informationen zu diesen und anderen Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Bemerkungen

Die feof-Routine (sowohl als Funktion als auch als Makro implementiert) bestimmt, ob das Ende des Streams übergeben wurde. Wenn das Ende der Datei übergeben wird, geben Lesevorgänge einen End-of-File-Indikator zurück, bis der Stream geschlossen wird oder bis zurück,fsetpos, fseek oder clearerr dafür aufgerufen wird.

Wenn eine Datei beispielsweise 10 Bytes enthält und Sie 10 Bytes aus der Datei lesen, gibt feof 0 zurück, da Sie nicht versucht haben, über das Ende hinaus zu lesen, obwohl sich der Dateizeiger am Ende der Datei befindet. Erst nachdem Sie versucht haben, ein 11. Byte zu lesen, gibt feof einen Wert ungleich 0 (null) zurück.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dies ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Funktion Erforderlicher Header
feof <stdio.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Compatibility.

Beispiel

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

Eingabe: crt_feof.txt

Line one.
Line two.

Output

Number of bytes read = 19

Siehe auch

Fehlerbehandlung
Stream-E/A
clearerr
_eof
ferror
perror, _wperror