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

