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; }