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_errlistve _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şı , , fsetposfseekclearerr veya çağrılana kadar rewindokuma 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

Ayrıca bkz.

Hata işleme
Akış G/Ç
clearerr
_eof
ferror
perror, _wperror