feof

Input-Output Functions

Checks if the end of file has occurred on a stream.

int feof( FILE *file_pointer);

file_pointer A pointer to a file.

Return Values

Returns a non-zero value when the position indicator reaches the End Of File in the last input operation with the specified stream. Otherwise, returns 0.

Example

The following example, for Windows platforms, opens a file and reads it into a buffer until feof returns true, indicating the end of the file.

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