ferror
| Input-Output Functions |
Checks if any error has occurred during file I/0.
int ferror( FILE *file_pointer);
| file_pointer | A pointer to a file structure created with fopen |
Return Values
If there were no errors, returns 0. Otherwise, returns a non-zero value and the error indicator of the stream remains set.
For ferror details, refer to your C language documentation.
Example
The following example, for Windows platforms, opens a file and reads it into a buffer. ferror checks for errors on the read file stream.
To run the example, copy the file readme.txt from the installation's dat directory to the c drive, or copy another file and change the value of filename.
#include <stdio.h>
int count, total = 0;
char buffer[1000];
FILE* file_stream;
char * filename = "c:\\readme.txt";
if ((file_stream = fopen(filename, "r")) == NULL) {
lr_error_message ("Cannot open %s", filename);
return -1;
}// Read until end of file
while (!feof(file_stream)) {
// Read 1000 bytes while maintaining a running count
count = fread(buffer, sizeof(char), 1000, file_stream);
lr_output_message ("%3d read", count);
// Check for file I/O errors if (ferror(file_stream)) {
lr_output_message ("Error reading file %s", filename);
break;
}// Add up actual bytes read
total += count;
}
lr_output_message ("Total number of bytes read = %d", total);// Close the file stream
if (fclose(file_stream))
lr_error_message ("Error closing file %s", filename);Example: Output:
Action.c(19): 1000 bytes read
Action.c(19): 1000 bytes read
...
Action.c(19): 1000 bytes read
Action.c(20): 977 read
Action.c(34): Total number of bytes read = 69977

