Read Part of a String From a Text File C Programming
C programming language supports 4 pre-defined functions to read contents from a file, defined in stdio.h header file:
- fgetc() – This function is used to read a single character from the file.
- fgets() – This role 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 shut the file using the role fclose().
Let's begin discussing each of these functions in detail.
fgetc()
fgetc() reads characters pointed past the office pointer at that fourth dimension. On each successful read, it returns the character (ASCII value) read from the stream and advances the read position to the next character. This part returns a abiding EOF (-1) when there is no content to read or an unsuccessful read.
Syntax:
int fgetc(FILE *ptr);
Arroyo:
- 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 information technology reaches and of file.
- When it reaches terminate it returns EOF grapheme (-1).
Using EOF:
Beneath is the C programme to implement the higher up approach-
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE * ptr;
char ch;
ptr = fopen ( "test.txt" , "r" );
if (NULL == ptr) {
printf ( "file can't exist opened \due north" );
}
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 information science portal for geeks
Output:
In the above lawmaking, the approach is to read i graphic symbol from the file and check if it is not EOF, if information technology is not then print it and if it is and so stop 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() role check for end of file. since feof() returns true after information technology reaches the end.
- Utilise logical Non operator(!) so that when it reaches finish status become false and loop stop.
Below is the C program to implement the above approach:
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int principal()
{
FILE * ptr;
char ch;
ptr = fopen ( "test.txt" , "r" );
if (Aught == ptr) {
printf ( "file can'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 computer scientific discipline portal for geeks
Output:
fgets()
fgets() reads one string at a time from the file. fgets() returns a cord if it is successfully read past function or returns Cypher if can non read.
Syntax:
char * fgets(char *str, int size, FILE * ptr);
Hither,
str: Information technology is string in which fgets() store string after reading it from file.
size: It is maximum characters to read from stream.
ptr: It is file pointer.
Arroyo:
- In this approach, the contents of the file are read one character at a time until we reach the terminate of the file.
- When nosotros reach the stop of the file fgets() can't read and returns NULL and the program volition stop reading.
Below is the C plan to implement the above approach:
C
#include <stdio.h>
#include <stdlib.h>
#include <cord.h>
int primary()
{
FILE * ptr;
char str[50];
ptr = fopen ( "test.txt" , "a+" );
if (Zero == ptr) {
printf ( "file can't be opened \northward" );
}
printf ( "content of this file are \n" );
while ( fgets (str, 50, ptr) != Zero) {
printf ( "%south" , str);
}
fclose (ptr);
render 0;
}
Input File:
GeeksforGeeks | A estimator 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 it in variables.
- The data in the buffer is printed on the console till the stop of the file is reached.
C++
#include <stdio.h>
int main()
{
FILE * ptr = fopen ( "abc.txt" , "r" );
if (ptr == NULL) {
printf ( "no such file." );
render 0;
}
char buf[100];
while ( fscanf (ptr, "%*s %*s %s " ,
buf)
== one)
printf ( "%s\n" , buf);
render 0;
}
Output:
fread()
fread() makes information technology easier to read blocks of information from a file. For instance, in the example of reading a structure from the file, it becomes an like shooting fish in a barrel 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 1 with a size of size bytes.
stream: This is the pointer to a FILE object that specifies an input stream.
Arroyo:
- It starting time, reads the count number of objects, each one with a size of size bytes from the given input stream.
- The full 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, then this programme will simply render 0.
C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Class {
char cname[thirty];
char sdate[30];
};
int main()
{
FILE * of;
of = fopen ( "test.txt" , "w" );
if (of == NULL) {
fprintf (stderr,
"\nError to open the file\n" );
go out (one);
}
struct Course inp1 = { "Algorithms" ,
"30OCT" };
struct Course inp2 = { "DataStructures" ,
"28SEPT" };
struct Form inp3 = { "Programming" ,
"1NOV" };
fwrite (&inp1, sizeof ( struct Course),
1, of);
fwrite (&inp2, sizeof ( struct Course),
1, of);
fwrite (&inp3, sizeof ( struct Course),
1, of);
if ( fwrite != 0)
printf ( "Contents to file written successfully !\north" );
else
printf ( "Fault writing file !\due north" );
fclose (of);
FILE * inf;
struct Course inp;
inf = fopen ( "exam.txt" , "r" );
if (inf == NULL) {
fprintf (stderr,
"\nError to open up the file\n" );
exit (one);
}
while ( fread (&inp, sizeof ( struct Course),
1, inf))
printf ( "Course Name = %south Started = %due south\n" ,
inp.cname, inp.sdate);
fclose (inf);
}
Output:
Source: https://www.geeksforgeeks.org/c-program-to-read-contents-of-whole-file/
Post a Comment for "Read Part of a String From a Text File C Programming"