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.

Copy code
#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