Example: ferror

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