The fread function reads nmemb elements from the given stream to the given array.
for each element, fgetc is called size times (count of bytes for a single element) and file
position indicator for the stream is advanced by the number of characters read.
It is declared in stdio.h and takes four arguments. The fread function generally used for binary file to read the binary data from the given file stream.
Syntax of fread:
//Syntax of fread
size_t fread(void * restrict ptr, size_t size, size_t nmemb,
FILE * restrict stream);
Where,
ptr: Pointer to a block of memory with a minimum size of size*nmemb bytes.
size: Size in bytes of each element to be read.
nmemb: Number of elements to be read.
stream: Pointer to the file, from where data will be read.
You might like these articles,
- fwrite in C.
- Arithmetic operators with a pointer.
- Application of function pointer.
- Function pointer within a structure.
Return value of fread():
On success, it returns the number of elements successfully read. On error, it returns a number of elements less than nmemb.
Note: If the size or nmemb is zero, fread returns zero and the contents of the array and the state of the input stream remain unchanged.
Example code of fread,
In this example, I am reading 6 characters from the file “aticleworld.txt” using the fread function.
#include <stdio.h>
//Maximum size of the array
#define MAX_SIZE 32
int main()
{
//file pointer
FILE *fp = NULL;
char readFileData[MAX_SIZE] = {0};
//open the file
fp = fopen("aticleworld.txt", "r");
if(fp == NULL)
{
printf("Error in opening the file\n");
exit(1);
}
// Read 5 character from stream
fread(readFileData,sizeof(char),6, fp);
//Display read data
puts(readFileData);
//close the file
fclose(fp);
printf("Read file successfully\n");
return 0;
}
Output:

Reading a variable from a file using the fread:
Open the file in reading mode. If fopen function, open the file successfully, then using the fread function we can read the value of the variable.
#include <stdio.h>
int main()
{
//Variable to store read value
int data = 0;
//file pointer
FILE *fp = NULL;
//open the existing binary file
fp = fopen("aticleworld.dat", "rb");
if(fp == NULL)
{
printf("Error in opening the file\n");
exit(1);
}
//read variable value from file
fread(&data, sizeof(data), 1, fp);
fclose(fp);
return 0;
}
Reading an array from the file using the fread:
The below code reads 5 elements from the file and stores it in data (an integer array).
#include <stdio.h>
int main()
{
//Reading element of array
int data[10] = {0};
//file pointer
FILE *fp = NULL;
//open the existing binary file
fp = fopen("aticleworld.dat", "rb");
if(fp == NULL)
{
printf("Error in creating the file\n");
exit(1);
}
//Reads 5 element from the file and stores it in data.
fwrite(data, sizeof(data[0]),5, fp);
fclose(fp);
return 0;
}
Reading a structure variable from the file using the fread in C:
The below code using the fread in C, read the contents of a structure variable from the file and stores it in the structure variable sAmlendraInfor.
#include <stdio.h>
//structure
typedef struct
{
int id;
char fName[16];
char lName[16];
} s_employee;
int main()
{
//structure variable
s_employee sAmlendraInfor = {0};
//file pointer
FILE *fp = NULL;
//open the existing file
fp = fopen("aticleworld.dat", "rb");
if(fp == NULL)
{
printf("Error in creating the file\n");
exit(1);
}
//Reads the contents of a structure variable from file
while(fread(&sAmlendraInfor, sizeof(sAmlendraInfor),1, fp) == 1)
{
printf("id: %d \n", sAmlendraInfor.id);
printf("First Name: %s \n", sAmlendraInfor.fName);
printf("Last Name: %s \n", sAmlendraInfor.lName);
}
fclose(fp);
return 0;
}
Output:

Reading an array of structure using fread in C:
The below code using the fread function reads the first 5 elements of structure array from the file and stores it in the structure array sAticleworldEmplInfo.
#include <stdio.h>
//structure
typedef struct
{
int id;
char fName[16];
char lName[16];
} s_employee;
int main()
{
//Array of structure variable
s_employee sAticleworldEmplInfo [10]= {0};
//file pointer
FILE *fp = NULL;
//open the existing file
fp = fopen("aticleworld.dat", "rb");
if(fp == NULL)
{
printf("Error in creating the file\n");
exit(1);
}
//Reads the five first element of the array of structure
fread(sAticleworldEmplInfo, sizeof(sAticleworldEmplInfo),5, fp);
fclose(fp);
return 0;
}
