C++ Function to Check if the Program Has Read All Lines of a File
C programming linguistic communication supports four pre-defined functions to read contents from a file, defined in stdio.h header file:
- fgetc() – This function is used to read a unmarried character from the file.
- fgets() – This function 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 function 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 close the file using the function fclose().
Allow's begin discussing each of these functions in detail.
fgetc()
fgetc() reads characters pointed by the function arrow at that fourth dimension. On each successful read, it returns the graphic symbol (ASCII value) read from the stream and advances the read position to the adjacent graphic symbol. This role 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 ane by one.
- Practise-While loop will be used which volition read character until it reaches and of file.
- When it reaches cease it returns EOF character (-one).
Using EOF:
Beneath is the C program to implement the to a higher place approach-
C
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
int
main()
{
FILE
* ptr;
char
ch;
ptr =
fopen
(
"exam.txt"
,
"r"
);
if
(Zilch == ptr) {
printf
(
"file can't be opened \n"
);
}
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 informatics portal for geeks
Output:
In the above code, the arroyo is to read one character from the file and check if it is not EOF, if it is not then print it and if it is and so finish reading.
Using feof():
feof() function takes file pointer as argument and returns true if pointer reaches the finish of the file.
Syntax:
int feof(FILE *ptr);
Approach:
- In this approach, a character is read using fgetc().
- Using feof() function check for end of file. since feof() returns true later on it reaches the terminate.
- Use logical Non operator(!) so that when it reaches stop status get false and loop stop.
Beneath is the C program to implement the above approach:
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main()
{
FILE
* ptr;
char
ch;
ptr =
fopen
(
"test.txt"
,
"r"
);
if
(Naught == ptr) {
printf
(
"file can't be opened \northward"
);
}
printf
(
"content of this file are \north"
);
while
(!
feof
(ptr)) {
ch =
fgetc
(ptr);
printf
(
"%c"
, ch);
}
fclose
(ptr);
return
0;
}
Input File:
GeeksforGeeks | A information science portal for geeks
Output:
fgets()
fgets() reads one cord at a fourth dimension from the file. fgets() returns a cord if it is successfully read by role or returns NULL if can non read.
Syntax:
char * fgets(char *str, int size, FILE * ptr);
Here,
str: It is cord in which fgets() store string after reading information technology from file.
size: It is maximum characters to read from stream.
ptr: It is file pointer.
Approach:
- In this arroyo, the contents of the file are read one graphic symbol at a time until we reach the end of the file.
- When we reach the finish of the file fgets() can't read and returns NULL and the programme 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
(
"exam.txt"
,
"a+"
);
if
(NULL == ptr) {
printf
(
"file can't exist opened \due north"
);
}
printf
(
"content of this file are \north"
);
while
(
fgets
(str, 50, ptr) != NULL) {
printf
(
"%s"
, str);
}
fclose
(ptr);
render
0;
}
Input File:
GeeksforGeeks | A computer science portal for geeks
Output:
fscanf()
fscanf() reads formatted input from a stream.
Syntax:
int fscanf(FILE *ptr, const char *format, …)
Arroyo:
- fscanf reads formatted data from the files and stores information technology in variables.
- The data in the buffer is printed on the panel till the cease of the file is reached.
C++
#include <stdio.h>
int
main()
{
FILE
* ptr =
fopen
(
"abc.txt"
,
"r"
);
if
(ptr == Zero) {
printf
(
"no such file."
);
render
0;
}
char
buf[100];
while
(
fscanf
(ptr,
"%*s %*s %south "
,
buf)
== 1)
printf
(
"%s\n"
, buf);
return
0;
}
Output:
fread()
fread() makes information technology easier to read blocks of data from a file. For case, in the case of reading a structure from the file, it becomes an easy chore 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 block of memory with a minimum size of size*nmemb bytes.
size: This is the size in bytes of each element to be read.
nmemb: This is the number of elements, each one with a size of size bytes.
stream: This is the arrow to a FILE object that specifies an input stream.
Approach:
- Information technology first, reads the count number of objects, each i with a size of size bytes from the given input stream.
- The total amount of bytes reads if successful is (size*count).
- According to the no. of characters read, the indicator file position is incremented.
- If the objects read are non trivially re-create-able, then the behavior is undefined and if the value of size or count is equal to zero, and so this program volition simply return 0.
C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct
Course {
char
cname[30];
char
sdate[thirty];
};
int
master()
{
FILE
* of;
of =
fopen
(
"test.txt"
,
"w"
);
if
(of == NULL) {
fprintf
(stderr,
"\nError to open the file\n"
);
exit
(i);
}
struct
Class inp1 = {
"Algorithms"
,
"30OCT"
};
struct
Course inp2 = {
"DataStructures"
,
"28SEPT"
};
struct
Course inp3 = {
"Programming"
,
"1NOV"
};
fwrite
(&inp1,
sizeof
(
struct
Course),
1, of);
fwrite
(&inp2,
sizeof
(
struct
Course),
1, of);
fwrite
(&inp3,
sizeof
(
struct
Form),
one, of);
if
(
fwrite
!= 0)
printf
(
"Contents to file written successfully !\n"
);
else
printf
(
"Fault writing file !\n"
);
fclose
(of);
FILE
* inf;
struct
Class inp;
inf =
fopen
(
"test.txt"
,
"r"
);
if
(inf == Nothing) {
fprintf
(stderr,
"\nError to open the file\due north"
);
exit
(1);
}
while
(
fread
(&inp,
sizeof
(
struct
Grade),
1, inf))
printf
(
"Class Name = %s Started = %s\n"
,
inp.cname, inp.sdate);
fclose
(inf);
}
Output:
Source: https://www.geeksforgeeks.org/c-program-to-read-contents-of-whole-file/
0 Response to "C++ Function to Check if the Program Has Read All Lines of a File"
Post a Comment