Visual Studio 6.0

Tests for an error on a stream.

int ferror( FILE *stream );

Function Required Header Compatibility
ferror <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

If no error has occurred on stream, ferror returns 0. Otherwise, it returns a nonzero value.



Pointer to FILE structure


The ferror routine (implemented both as a function and as a macro) tests for a reading or writing error on the file associated with stream. If an error has occurred, the error indicator for the stream remains set until the stream is closed or rewound, or until 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, feof, fopen, perror