feof
Bir akışta dosya sonu testlerini yapın.
Sözdizimi
int feof(
FILE *stream
);
Parametreler
stream
Yapı işaretçisi FILE
.
Dönüş değeri
Bir feof
okuma işlemi dosyanın sonundan sonra okumaya çalıştıysa işlev sıfır olmayan bir değer döndürür; aksi takdirde 0 döndürür. Akış işaretçisi iseNULL
, işlev Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, errno
olarak ayarlanır EINVAL
ve feof
0 döndürür.
İade kodları hakkında daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
Yordamı feof
(hem işlev hem de makro olarak uygulanır) sonunun stream
geçirilip geçirilmediğini belirler. Dosyanın sonu geçirildiğinde, akış kapatılana veya buna karşı , , fsetpos
fseek
clearerr
veya çağrılana kadar rewind
okuma işlemleri bir dosya sonu göstergesi döndürür.
Örneğin, bir dosya 10 bayt içeriyorsa ve dosyadan 10 bayt okursanız, feof
dosya işaretçisi dosyanın sonunda olsa bile, sonuna kadar okumayı denemediğiniz için 0 döndürür. Ancak 11. bayt okumaya çalıştığınızda sıfır olmayan bir değer döndürülür feof
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
feof |
<stdio.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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 );
}
Giriş: crt_feof.txt
Line one.
Line two.
Çıktı
Number of bytes read = 19