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_errlist
i _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 rewind
fsetpos
fseek
strumień 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