Visual Studio 6.0

Tests for end-of-file on a stream.

int feof( FILE *stream );

Function Required Header Compatibility
feof <stdio.h> ANSI, Win 95, Win NT

For additional compatibility information, see Compatibility in the Introduction.


LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

The feof function returns a nonzero value after the first read operation that attempts to read past the end of the file. It returns 0 if the current position is not end of file. There is no error return.



Pointer to FILE structure


The feof routine (implemented both as a function and as a macro) determines whether the end of stream has been reached. When end of file is reached, read operations return an end-of-file indicator until the stream is closed or until rewind, fsetpos, fseek, or clearerr is called against it.


/* FEOF.C: This program uses feof to indicate when
 * it reaches the end of the file FEOF.C. It also
 * checks for errors with ferror.

#include <stdio.h>
#include <stdlib.h>

void main( void )
   int  count, total = 0;
   char buffer[100];
   FILE *stream;

   if( (stream = fopen( "feof.c", "r" )) == NULL )
      exit( 1 );

   /* Cycle until end of file reached: */
   while( !feof( stream ) )
      /* Attempt to read in 10 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 );


Number of bytes read = 745

Error Handling RoutinesStream I/O Routines

See Also   clearerr, _eof, ferror, perror