C Standard Library

C <stdio.h> - fread() Function



The C <stdio.h> fread() function reads up to count elements, each one with a size of size bytes, from the given input stream stream and stores them in the block of memory specified by buffer. The file position indicator for the stream is advanced by the number of characters read.

The total amount of bytes read if successful is (size*count).

Syntax

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

Parameters

buffer Specify pointer to a block of memory with a size of at least (size*count) bytes, converted to a void*.
size Specify size, in bytes, of each element to be read.
size_t is an unsigned integral type.
count Specify number of elements, each one with a size of size bytes.
size_t is an unsigned integral type.
stream Specify a pointer to a FILE object that specifies an input stream.

Return Value

Returns the total number of elements successfully read. It may be less than count if an error or end-of-file condition occurs. In both cases, the proper indicator is set, which can be checked with ferror() and feof(), respectively.

If size or count is zero, fread() returns zero and performs no other action.

Example: fread() example

Lets assume that we have a file called test.txt. This file contains following content:

This is a test file.
It contains dummy content.

In the example below, the fread() function is used to read the content of this file.

#include <stdio.h>
#include <stdlib.h>

int main (){
  long lSize;
  char * buffer;

  //open the file in read mode
  FILE *pFile = fopen("test.txt", "r");

  //obtain file size
  fseek (pFile , 0 , SEEK_END);
  lSize = ftell (pFile);
  rewind (pFile);

  //allocate memory to buffer to contain the whole file
  buffer = (char*) malloc (sizeof(char)*lSize);  
  
  //read and display the whole file
  fread(buffer, 1, lSize, pFile);
  printf("%s", buffer);
  
  //close the file
  fclose(pFile);

  return 0;
}

The output of the above code will be:

This is a test file.
It contains dummy content.

Example: fread() and fwrite() example

Consider one more example where at first fwrite() function is used to write some content to a text file then fread() function is used to read the content of this file.

#include <stdio.h>
#include <string.h>

int main (){
  char c[] = "Hello World!";
  char buffer [100];

  //open the file in write and read mode
  FILE *pFile = fopen("test.txt", "w+");

  //write data to the file
  fwrite(c, strlen(c) + 1, 1, pFile);

  //seek to the beginning of the file
  fseek(pFile, 0, SEEK_SET);

  //read and display data
  fread(buffer, strlen(c)+1, 1, pFile);
  printf("%s\n", buffer);
  
  //close the file
  fclose(pFile);

  return 0;
}

The output of the above code will be:

Hello World!

❮ C <stdio.h> Library