Programming in C—Binary File I/O Funtions.

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@peerzadazeeshan·
0.000 HBD
Programming in C—Binary File I/O Funtions.
<div class="text-justify">

##### <center>Hello Everyone</center>

<center> ![images.jpeg](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/Q84ngyN8-images.jpeg)</center>
<center><sup>[Image Source](https://images.app.goo.gl/6XzumkqqxC8QqusU7)</sup></center>

I hope you all are fine and safe inside your homes. This is a weird time ongoing in the whole world and I hope it will get over soon. As during this time, everyone is locked into their homes. I want to share C programming language with you. I hope you guys like it, so lets happen today's topic.

#### <center> Binary File Input Output (I/O) Functions</center>
Have you ever thought, how can a large amount of numerical data be stored in file? Is it sufficient to store in text mode?
Well, a large amount of numerical data can not be stored in text mode. In such a case **Binary File** is used. 
Working on binary files is identical to text file with rare discrepancies in the opening, reading and writing to file.
Opening modes of binary files are **rb+, rb, wb+, wb, ab+** and **ab**. Only differences between opening modes of binary files and text files is that **b** is appended to indicate it is a ***Binary File**.
###### *fread() and fwrite()*— Functions for reading and writing Binary File.

These two functions *fread()* and *fwrite()* are used for reading from and writing to a file on disk respective of binary files.
***fwrite()***
Functions *fwrite()* takes 4 arguments. Address, size of data should be written in disk, number of type of data and pointer to file where user wants to write.
**Syntax:**
<code>fwrite(address_data,size_data,numbers_data,pointer_to_file);</code>
**Example:**
<code>#include <stdio.h>
struct marks
{
 int m1, m2,m3,m4,m5;
};
void main()
{
 int n;
 struct marks m;
 FILE *fptr;
 if ((fptr = fopen("C:\\TURBOC3\\mark.bin","wb")) == NULL){
 printf("File Cannot Open!");
 exit(1);
 }
 printf("Enter 5 Students Marks\n");
 for(n = 1; n <= 5; ++n)
 {
 printf("Enter English Mark of Student %d : ", n);
 scanf("%d",&m.m1);
 printf("Enter Math's Mark of Student %d : ", n);
 scanf("%d",&m.m2);
 printf("Enter Physics Mark of Student %d : ", n);
 scanf("%d",&m.m3);
 printf("Enter Chemistry Mark of Student %d : ", n);
 scanf("%d",&m.m4);
 printf("Enter Python Mark of Student %d : ", n);
 scanf("%d",&m.m5);
 fwrite(&m, sizeof(struct marks), 1, fptr); 
 }
 fclose(fptr); 
 }</code>

###### Output of above program:

<center>![IMG_20200430_190828.jpg](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/1uB5yp9s-IMG_20200430_190828.jpg)</center>
<center><sup>Output got after execution of program</sup></center>

In the above program, user can create a new file **mark.bin** in ***C:\\TURBOC3\\*** path. Structure of the marks with 5 integers are declared as m1,m2,m3,m4 and m5 and are defined it in new function **m** as main function. 
User can read 5 subject marks and can store value into the file with the help of **fwrite()** function. Address of the **m** is stored in first parameter and second parameter takes size of marks structured. 
Since, only one instance of **m** is to be inserted so third parameter is 1. ***fptr** points to the file where data is to be stored. 
On last step, file is closed.
***fread()***
The function **fread()** also takes the same 4 arguments which **fwrite()** takes.
**Syntax:**
<code>fread(address_data,size_data,numbers_data,pointer_to_file);</code>
**Example:**
<code>#include <stdio.h>
struct marks
{
 int m1, m2,m3,m4,m5;
};
void main()
{
 int n;
struct marks m;
 FILE *fptr;
 if ((fptr = fopen("C:\\TURBOC3\\mark.bin","rb")) == NULL){
 printf("Cannot Open File !");
 exit(1);
 }
 printf("Marks are\n");
 for(n = 1; n <= 5; ++n)
 {
 fread(&m, sizeof(struct marks), 1, fptr); 
 printf("Student %d Marks : English: %d\t Maths : %d\t Physics: %d\t Chemistry : %d\t 
Python: %d\n",n, m.m1, m.m2, m.m3,m.m4,m.m5);
 }
 fclose(fptr); 
}</code>
###### Output of the above program:
<center>![IMG_20200430_203542.jpg](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/RwkwHngd-IMG_20200430_203542.jpg)</center>
<center><sup>Output got after execution of above program</sup></center>
In the above program, user can read the same file **mark.bin** in ***C:\\TURBOC3\\*** path and loop through records respectively one by one. Simply, one marks record of marks size is read from the file indicated **fptr* into structure **m**. By doing all this procedure, user will get the same records which inserted in previous Example.

<center>![Logo.png](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/i01yOun5-Logo.png)</center>
##### My last posts on programming, if you want to read go through it.
<center>
1: [Ist post—File processing](https://hive.blog/hive-122108/@peerzadazeeshan/c-programing-file-processing).
2: [2nd post—File Operations](https://hive.blog/hive-196387/@peerzadazeeshan/programming-in-c-file-operations)
3: [3rd post—Text File I/O](https://hive.blog/hive-122108/@peerzadazeeshan/programming-in-c-text-file-input-output-i-o)
</center>
<center>![Logo.png](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/i01yOun5-Logo.png)</center>
##### <center>Thank you.
#### I hope you guys liked my post.
#### Keep Supporting.
#### *STAY TUNED FOR NEXT POST*
<center>
|UPVOTE|COMMENT|RESTEEM|
|-|-|-|
|IF YOU|LIKED|MY POST|
</center>

</center>

<center>![Logo.png](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/i01yOun5-Logo.png)</center>

<center>![Created by @zord189](https://files.peakd.com/file/peakd-hive/peerzadazeeshan/UzLYooQj-peerzadazeeshan.gif)</center>
</div>

<h3>Stay Home, Stay Safe</h3>
#### <center>*@peerzadazeeshan*</center>
</center></p></div>
</div>

</div>
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,