Opening and Reading a Text File in C

C programming linguistic communication supports four pre-defined functions to read contents from a file, defined in stdio.h header file:

  1. fgetc() This function is used to read a single grapheme from the file.
  2. fgets() This office is used to read strings from files.
  3. fscanf() This function is used to read the block of raw bytes from files. This is used to read binary files.
  4. 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 arrow.
  • Read contents of the file using whatsoever 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 particular.

fgetc()

fgetc() reads characters pointed past the part pointer at that time. On each successful read, information technology returns the grapheme (ASCII value) read from the stream and advances the read position to the side by side character. This part returns a abiding EOF (-1) when in that location 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 past reading characters one past 1.
  • Do-While loop will be used which will read grapheme until it reaches and of file.
  • When information technology reaches finish information technology returns  EOF character (-i).

Using EOF:
Below 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 ( "exam.txt" , "r" );

if (NULL == ptr) {

printf ( "file can't be opened \n" );

}

printf ( "content of this file are \north" );

practice {

ch = fgetc (ptr);

printf ( "%c" , ch);

} while (ch != EOF);

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A information science portal for geeks

Output:

output fgetc

In the above lawmaking, the approach is to read one character from the file and check if it is not EOF, if information technology is not and then print information technology and if information technology is then stop reading.

Using feof():
feof() office takes file pointer as argument and returns true if pointer reaches the cease of the file.

Syntax:

int feof(FILE *ptr);

Arroyo:

  • In this approach, a character is read using fgetc().
  • Using feof() function check for cease of file. since feof() returns true afterwards it reaches the end.
  • Utilize logical NOT operator(!) so that when information technology reaches end condition become false and loop stop.

Below is the C plan to implement the above approach:

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

FILE * ptr;

char ch;

ptr = fopen ( "exam.txt" , "r" );

if (Zilch == ptr) {

printf ( "file tin can't be opened \due north" );

}

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 science portal for geeks

Output:

output feof

fgets()

fgets() reads one string at a time from the file. fgets() returns a string if it 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 it from file.
size: Information technology is maximum characters to read from stream.
ptr: It is file pointer.

Approach:

  • In this approach, the contents of the file are read one grapheme at a fourth dimension until we reach the end of the file.
  • When we reach the end of the file fgets() tin't read and returns NULL and the program will finish reading.

Beneath is the C program to implement the above arroyo:

C

#include <stdio.h>

#include <stdlib.h>

#include <cord.h>

int main()

{

FILE * ptr;

char str[l];

ptr = fopen ( "exam.txt" , "a+" );

if (NULL == ptr) {

printf ( "file can't exist opened \n" );

}

printf ( "content of this file are \northward" );

while ( fgets (str, 50, ptr) != Null) {

printf ( "%s" , str);

}

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A information science portal for geeks

Output:

Output fgets

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 information in the buffer is printed on the panel till the end of the file is reached.

C++

#include <stdio.h>

int main()

{

FILE * ptr = fopen ( "abc.txt" , "r" );

if (ptr == Zilch) {

printf ( "no such file." );

return 0;

}

char buf[100];

while ( fscanf (ptr, "%*s %*south %due south " ,

buf)

== 1)

printf ( "%s\north" , buf);

return 0;

}

Output:

fread()

fread() makes it easier to read blocks of information from a file. For example, in the instance of reading a structure from the file, it becomes an like shooting fish in a barrel task to read using fread.

Syntax:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

ptr: This is the arrow to a block of memory with a minimum size of size*nmemb bytes.
size: This is the size in bytes of each chemical 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:

  • It first, 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).
  • According to the no. of characters read, the indicator file position is incremented.
  • If the objects read are not trivially copy-able, so the behavior is undefined and if the value of size or count is equal to null, then this program will simply return 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <cord.h>

struct Course {

char cname[xxx];

char sdate[30];

};

int main()

{

FILE * of;

of = fopen ( "examination.txt" , "w" );

if (of == NULL) {

fprintf (stderr,

"\nError to open up the file\n" );

exit (ane);

}

struct Course inp1 = { "Algorithms" ,

"30OCT" };

struct Form inp2 = { "DataStructures" ,

"28SEPT" };

struct Grade inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Course),

i, of);

fwrite (&inp2, sizeof ( struct Course),

1, of);

fwrite (&inp3, sizeof ( struct Course),

i, of);

if ( fwrite != 0)

printf ( "Contents to file written successfully !\northward" );

else

printf ( "Mistake writing file !\n" );

fclose (of);

FILE * inf;

struct Class inp;

inf = fopen ( "test.txt" , "r" );

if (inf == Nil) {

fprintf (stderr,

"\nError to open the file\north" );

leave (1);

}

while ( fread (&inp, sizeof ( struct Course),

ane, inf))

printf ( "Course Name = %s Started = %due south\n" ,

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


mitchellfacces.blogspot.com

Source: https://www.geeksforgeeks.org/c-program-to-read-contents-of-whole-file/

0 Response to "Opening and Reading a Text File in C"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel