ストリームのファイルの末尾をテストします。Tests for end-of-file on a stream.


int feof(
   FILE *stream


FILE 構造体へのポインター。Pointer to FILE structure.

戻り値Return Value

Feof関数は、ファイルの終端を越えて読み取りを実行しようとしましたが、読み取り操作の場合に 0 以外の値を返します。 それ以外の場合は 0 を返します。The feof function returns a nonzero value if a read operation has attempted to read past the end of the file; it returns 0 otherwise. ストリーム ポインターがある場合NULL、」の説明に従って、関数は、無効なパラメーター ハンドラーを呼び出すパラメーターの検証です。If the stream pointer is NULL, the function invokes the invalid parameter handler, as described in Parameter Validation. 続けるには、実行が許可された場合errnoに設定されているEINVALfeof 0 を返します。If execution is allowed to continue, errno is set to EINVAL and the feof returns 0.

エラー コードの詳細については、「_doserrno、errno、_sys_errlist、_sys_nerr」をご覧ください。See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, error codes.


Feofルーチン (関数とマクロの両方を実装) を決定するかどうかの末尾ストリームが渡されました。The feof routine (implemented both as a function and as a macro) determines whether the end of stream has been passed. ファイルの末尾が渡されると、読み取り操作がファイルの終わりインジケーターを返すまで、またはストリームが閉じられるまで巻き戻しfsetposfseek、またはclearerrに対してと呼びます。When the end of file is passed, read operations return an end-of-file indicator until the stream is closed or until rewind, fsetpos, fseek, or clearerr is called against it.

など、ファイルには 10 バイトが含まれていて、ファイルから 10 バイトを読み取るfeofは、ファイル ポインターは、ファイルの最後が、末尾を超えていないので 0 を返します。For example, if a file contains 10 bytes and you read 10 bytes from the file, feof will return 0 because, even though the file pointer is at the end of the file, you have not attempted to read beyond the end. だけを読み取る後 11 バイトfeof 0 以外の値を返します。Only after you try to read an 11th byte will feof return a nonzero value.


関数Function 必須ヘッダーRequired header
feoffeof <stdio.h><stdio.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.


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

      // Total up actual bytes read
      total += count;
   printf( "Number of bytes read = %d\n", total );
   fclose( stream );

入力: crt_feof.txtInput: crt_feof.txt

Line one.
Line two.


Number of bytes read = 19

関連項目See also

エラー処理Error Handling
ストリーム入出力Stream I/O
perror、_wperrorperror, _wperror