Read a Text File in C and Calculate Its Lenght
C programming language 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 single graphic symbol from the file.
- fgets() – This function is used to read strings from files.
- fscanf() – This part is used to read the block 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 close the file using the office fclose().
Let'due south begin discussing each of these functions in item.
fgetc()
fgetc() reads characters pointed past the office pointer at that time. On each successful read, it returns the graphic symbol (ASCII value) read from the stream and advances the read position to the next graphic symbol. This role returns a abiding EOF (-1) when there is no content to read or an unsuccessful read.
Syntax:
int fgetc(FILE *ptr);
Approach:
- This plan reads the whole content of the file, using this office by reading characters one by one.
- Do-While loop will be used which will read graphic symbol until it reaches and of file.
- When it reaches stop information technology returns EOF character (-1).
Using EOF:
Below is the C program to implement the above approach-
C
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
int
chief()
{
FILE
* ptr;
char
ch;
ptr =
fopen
(
"test.txt"
,
"r"
);
if
(Goose egg == ptr) {
printf
(
"file tin't exist opened \northward"
);
}
printf
(
"content of this file are \n"
);
do
{
ch =
fgetc
(ptr);
printf
(
"%c"
, ch);
}
while
(ch != EOF);
fclose
(ptr);
return
0;
}
Input File:
GeeksforGeeks | A computer science portal for geeks
Output:
In the above code, the approach is to read one character from the file and cheque if it is not EOF, if it is not so print it and if it is then end reading.
Using feof():
feof() office takes file arrow as statement and returns true if pointer reaches the cease of the file.
Syntax:
int feof(FILE *ptr);
Approach:
- In this approach, a character is read using fgetc().
- Using feof() office check for cease of file. since feof() returns true after it reaches the stop.
- Use logical Not operator(!) so that when information technology reaches end condition become faux and loop stop.
Below is the C program to implement the in a higher place approach:
C
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
int
main()
{
FILE
* ptr;
char
ch;
ptr =
fopen
(
"examination.txt"
,
"r"
);
if
(NULL == 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 information science portal for geeks
Output:
fgets()
fgets() reads one string at a fourth dimension from the file. fgets() returns a cord if information technology is successfully read by function or returns NULL if can not read.
Syntax:
char * fgets(char *str, int size, FILE * ptr);
Hither,
str: Information technology is string in which fgets() store string after reading information technology from file.
size: It is maximum characters to read from stream.
ptr: Information technology is file pointer.
Approach:
- In this approach, the contents of the file are read ane character at a fourth dimension until we reach the end of the file.
- When nosotros reach the end of the file fgets() can't read and returns NULL and the program will stop reading.
Beneath is the C plan to implement the in a higher place arroyo:
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
principal()
{
FILE
* ptr;
char
str[50];
ptr =
fopen
(
"examination.txt"
,
"a+"
);
if
(Nil == ptr) {
printf
(
"file can't be opened \n"
);
}
printf
(
"content of this file are \n"
);
while
(
fgets
(str, fifty, ptr) != NULL) {
printf
(
"%s"
, str);
}
fclose
(ptr);
return
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, …)
Approach:
- fscanf reads formatted data from the files and stores it 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 == NULL) {
printf
(
"no such file."
);
return
0;
}
char
buf[100];
while
(
fscanf
(ptr,
"%*southward %*due south %s "
,
buf)
== i)
printf
(
"%s\n"
, buf);
return
0;
}
Output:
fread()
fread() makes it easier to read blocks of data from a file. For instance, in the case of reading a construction from the file, it becomes an easy 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 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 pointer to a FILE object that specifies an input stream.
Approach:
- Information technology get-go, reads the count number of objects, each ane 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 not trivially copy-able, then the behavior is undefined and if the value of size or count is equal to zero, then this program will only return 0.
C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct
Course {
char
cname[30];
char
sdate[30];
};
int
main()
{
FILE
* of;
of =
fopen
(
"test.txt"
,
"west"
);
if
(of == NULL) {
fprintf
(stderr,
"\nError to open the file\n"
);
exit
(1);
}
struct
Grade inp1 = {
"Algorithms"
,
"30OCT"
};
struct
Course inp2 = {
"DataStructures"
,
"28SEPT"
};
struct
Course inp3 = {
"Programming"
,
"1NOV"
};
fwrite
(&inp1,
sizeof
(
struct
Course),
1, of);
fwrite
(&inp2,
sizeof
(
struct
Form),
1, of);
fwrite
(&inp3,
sizeof
(
struct
Course),
1, of);
if
(
fwrite
!= 0)
printf
(
"Contents to file written successfully !\n"
);
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 up the file\n"
);
go out
(1);
}
while
(
fread
(&inp,
sizeof
(
struct
Class),
1, inf))
printf
(
"Course Proper noun = %southward Started = %s\north"
,
inp.cname, inp.sdate);
fclose
(inf);
}
Output:
Source: https://www.geeksforgeeks.org/c-program-to-read-contents-of-whole-file/
0 Response to "Read a Text File in C and Calculate Its Lenght"
Post a Comment