Sys Pro Practical Save Program Even Gets Closed
Sys Pro Practical Save Program Even Gets Closed
If you have to enter a large number of data, it will take a lot of time to
enter them all.
However, if you have a file containing all the data, you can easily access
the contents of the file using a few commands in C.
You can easily move your data from one computer to another without any
changes.
Types of Files
When dealing with files, there are two types of files you should know about:
1. Text files
2. Binary files
1. Text files
Text files are the normal .txt files. You can easily create text files using any
simple text editors such as Notepad.
When you open those files, you'll see all the contents within the file as plain
text. You can easily edit or delete the contents.
They take minimum effort to maintain, are easily readable, and provide the
least security and takes bigger storage space.
2. Binary files
They can hold a higher amount of data, are not readable easily, and provides
better security than text files.
File Operations
In C, you can perform four major operations on files, either text or binary:
3. Closing a file
FILE *fptr;
ptr = fopen("fileopen","mode");
For example,
fopen("E:\\cprogram\\newprogram.txt","w");
fopen("E:\\cprogram\\oldprogram.bin","rb");
Let's suppose the file newprogram.txt doesn't exist in the location E:\cprogram .
The first function creates a new file named newprogram.txt and opens it for
writing as per the mode 'w'.
The writing mode allows you to create and edit (overwrite) the contents of
the file.
Now let's suppose the second binary file oldprogram.bin exists in the
location E:\cprogram . The second function opens the existing file for reading
in binary mode 'rb'.
The reading mode only allows you to read the file, you cannot write into
the file.
Opening Modes in Standard I/O
Mod
Meaning of Mode During Inexistence of file
e
Open for append in binary mode. If the file does not exist, it will be
ab
Data is added to the end of the file. created.
Open for both reading and writing in If the file does not exist, fopen()
rb+
binary mode. returns NULL.
w+ Open for both reading and writing. If the file exists, its contents are
Opening Modes in Standard I/O
Mod
Meaning of Mode During Inexistence of file
e
overwritten.
If the file does not exist, it will be
created.
Open for both reading and appending in If the file does not exist, it will be
ab+
binary mode. created.
Closing a File
The file (both text and binary) should be closed after reading/writing.
fclose(fptr);
Here, fptr is a file pointer associated with the file to be closed.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
fprintf(fptr,"%d",num);
fclose(fptr);
return 0;
}
This program takes a number from the user and stores in the file program.txt .
After you compile and run this program, you can see a text
file program.txt created in C drive of your computer. When you open the file,
you can see the integer you entered.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
fscanf(fptr,"%d", &num);
return 0;
}
This program reads the integer present in the program.txt file and prints it onto
the screen.
If you successfully created the file from Example 1, running this program will
get you the integer you entered.
Other functions like fgetchar() , fputc() etc. can be used in a similar way.
Reading and writing to a binary file
Functions fread() and fwrite() are used for reading from and writing to a file on
the disk respectively in case of binary files.
To write into a binary file, you need to use the fwrite() function. The functions
take four arguments:
1. address of data to be written in the disk
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
return 0;
}
In this program, you read the same file program.bin and loop through the
records one by one.
In simple terms, you read one threeNum record of threeNum size from the file
pointed by *fptr into the structure num .
You'll get the same records you inserted in Example 3.
This will waste a lot of memory and operation time. An easier way to get to the
required data can be achieved using fseek() .
As the name suggests, fseek() seeks the cursor to the given record in the file.
Syntax of fseek()
Whence Meaning
SEEK_CUR Starts the offset from the current location of the cursor in the file.
Example 5: fseek()
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
return 0;
}