Open a File and Read a Single Integer in C
C programming linguistic communication supports four pre-divers functions to read contents from a file, divers in stdio.h header file:
- fgetc() – This function is used to read a single graphic symbol from the file.
- fgets() – This part is used to read strings from files.
- fscanf() – This function is used to read the cake of raw bytes from files. This is used to read binary files.
- fread() – This role is used to read formatted input from a file.
Steps To Read A File:
- Open a file using the function fopen() and store the reference of the file in a FILE pointer.
- Read contents of the file using any of these functions fgetc(), fgets(), fscanf(), or fread().
- File shut the file using the function fclose().
Let's begin discussing each of these functions in detail.
fgetc()
fgetc() reads characters pointed by the function pointer at that time. On each successful read, information technology returns the character (ASCII value) read from the stream and advances the read position to the next graphic symbol. This function returns a constant EOF (-ane) when there is no content to read or an unsuccessful read.
Syntax:
int fgetc(FILE *ptr);
Approach:
- This program reads the whole content of the file, using this function by reading characters one by one.
- Do-While loop will be used which will read character until it reaches and of file.
- When it reaches end it returns EOF grapheme (-ane).
Using EOF:
Below is the C program to implement the above arroyo-
C
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
int
principal()
{
FILE
* ptr;
char
ch;
ptr =
fopen
(
"exam.txt"
,
"r"
);
if
(Nix == ptr) {
printf
(
"file can't be opened \northward"
);
}
printf
(
"content of this file are \n"
);
do
{
ch =
fgetc
(ptr);
printf
(
"%c"
, ch);
}
while
(ch != EOF);
fclose
(ptr);
render
0;
}
Input File:
GeeksforGeeks | A computer science portal for geeks
Output:
In the to a higher place code, the approach is to read one character from the file and check if it is non EOF, if information technology is not then print it and if it is then stop reading.
Using feof():
feof() function takes file pointer as argument and returns true if pointer reaches the end of the file.
Syntax:
int feof(FILE *ptr);
Approach:
- In this approach, a character is read using fgetc().
- Using feof() office cheque for end of file. since feof() returns truthful subsequently it reaches the finish.
- Use logical Not operator(!) so that when it reaches cease condition become false and loop stop.
Beneath is the C program to implement the above approach:
C
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
int
main()
{
FILE
* ptr;
char
ch;
ptr =
fopen
(
"examination.txt"
,
"r"
);
if
(Naught == ptr) {
printf
(
"file tin't be opened \n"
);
}
printf
(
"content of this file are \n"
);
while
(!
feof
(ptr)) {
ch =
fgetc
(ptr);
printf
(
"%c"
, ch);
}
fclose
(ptr);
return
0;
}
Input File:
GeeksforGeeks | A informatics portal for geeks
Output:
fgets()
fgets() reads one cord at a time from the file. fgets() returns a string if it is successfully read by function or returns NULL if tin not read.
Syntax:
char * fgets(char *str, int size, FILE * ptr);
Here,
str: It is string in which fgets() store string after reading it from file.
size: Information technology is maximum characters to read from stream.
ptr: It is file pointer.
Approach:
- In this arroyo, the contents of the file are read ane character at a fourth dimension until nosotros attain the terminate of the file.
- When we achieve the end of the file fgets() can't read and returns NULL and the plan will stop reading.
Below is the C program to implement the to a higher place approach:
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main()
{
FILE
* ptr;
char
str[50];
ptr =
fopen
(
"test.txt"
,
"a+"
);
if
(Cipher == ptr) {
printf
(
"file can't be opened \n"
);
}
printf
(
"content of this file are \north"
);
while
(
fgets
(str, l, ptr) != Cypher) {
printf
(
"%south"
, str);
}
fclose
(ptr);
return
0;
}
Input File:
GeeksforGeeks | A computer scientific discipline portal for geeks
Output:
fscanf()
fscanf() reads formatted input from a stream.
Syntax:
int fscanf(FILE *ptr, const char *format, …)
Approach:
- fscanf reads formatted information from the files and stores information technology in variables.
- The information in the buffer is printed on the panel till the stop of the file is reached.
C++
#include <stdio.h>
int
principal()
{
FILE
* ptr =
fopen
(
"abc.txt"
,
"r"
);
if
(ptr == NULL) {
printf
(
"no such file."
);
render
0;
}
char
buf[100];
while
(
fscanf
(ptr,
"%*s %*s %southward "
,
buf)
== ane)
printf
(
"%due south\due north"
, buf);
return
0;
}
Output:
fread()
fread() makes it easier to read blocks of information from a file. For instance, in the instance of reading a structure from the file, it becomes an piece of cake job to read using fread.
Syntax:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
ptr: This is the pointer to a cake of retentivity with a minimum size of size*nmemb bytes.
size: This is the size in bytes of each element to exist read.
nmemb: This is the number of elements, each one with a size of size bytes.
stream: This is the pointer to a FILE object that specifies an input stream.
Arroyo:
- Information technology get-go, reads the count number of objects, each one with a size of size bytes from the given input stream.
- The total amount of bytes reads if successful is (size*count).
- Co-ordinate to the no. of characters read, the indicator file position is incremented.
- If the objects read are non trivially copy-able, then the behavior is undefined and if the value of size or count is equal to zero, so this program will only return 0.
C++
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
struct
Course {
char
cname[30];
char
sdate[30];
};
int
chief()
{
FILE
* of;
of =
fopen
(
"test.txt"
,
"due west"
);
if
(of == Naught) {
fprintf
(stderr,
"\nError to open up the file\northward"
);
exit
(one);
}
struct
Course inp1 = {
"Algorithms"
,
"30OCT"
};
struct
Class inp2 = {
"DataStructures"
,
"28SEPT"
};
struct
Course inp3 = {
"Programming"
,
"1NOV"
};
fwrite
(&inp1,
sizeof
(
struct
Course),
1, of);
fwrite
(&inp2,
sizeof
(
struct
Course),
one, of);
fwrite
(&inp3,
sizeof
(
struct
Class),
one, of);
if
(
fwrite
!= 0)
printf
(
"Contents to file written successfully !\north"
);
else
printf
(
"Error writing file !\north"
);
fclose
(of);
FILE
* inf;
struct
Course inp;
inf =
fopen
(
"test.txt"
,
"r"
);
if
(inf == NULL) {
fprintf
(stderr,
"\nError to open the file\n"
);
exit
(1);
}
while
(
fread
(&inp,
sizeof
(
struct
Form),
ane, inf))
printf
(
"Course Proper name = %s Started = %southward\n"
,
inp.cname, inp.sdate);
fclose
(inf);
}
Output:
Source: https://www.geeksforgeeks.org/c-program-to-read-contents-of-whole-file/
0 Response to "Open a File and Read a Single Integer in C"
Post a Comment