fread

Input-Output Functions

Reads unformatted data from a stream into a buffer.

size_t fread( void *buffer, size_t size, size_t count, FILE *file_pointer);

buffer The buffer in which to store the data stream.
size The size (in bytes) of each element to read.
count The number of elements to read.
file_pointer A pointer to a FILE object that identifies the input stream.

Return Values

Returns the total number of items read. If this number differs from the requested amount (count parameter) an error has occurred or End Of File has been reached. To determine what happened, call feof or ferror.

Example

The following example, for Windows platforms, opens a file, reads the contents into a buffer using fread, and then closes 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 bytes 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; 
    }
// Display final total 
    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