Tests for an error on a stream.
#include <stdio.h>
int ferror( FILE *stream );
stream | 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.
If no error has occurred on stream, ferror returns 0. Otherwise, it returns a nonzero value.
Standards:ANSI, UNIX
16-Bit:DOS, QWIN, WIN, WIN DLL
32-Bit:DOS32X
clearerr, _eof, feof, fopen, perror
/* 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" );
break;
}
/* Total up actual bytes read */
total += count;
}
printf( "Number of bytes read = %d\n", total );
fclose( stream );
}
Number of bytes read = 697