Read One Character at a Time From File C++

C programming language supports iv pre-defined functions to read contents from a file, divers in stdio.h header file:

  1. fgetc() This role is used to read a single graphic symbol from the file.
  2. fgets() This office is used to read strings from files.
  3. fscanf() This role 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 role fopen() and store the reference of the file in a FILE pointer.
  • Read contents of the file using whatsoever of these functions fgetc(), fgets(), fscanf(), or fread().
  • File close the file using the function fclose().

Permit'due south brainstorm discussing each of these functions in detail.

fgetc()

fgetc() reads characters pointed by the function arrow 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 side by side graphic symbol. This role returns a abiding EOF (-i) 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 1 by one.
  • Do-While loop will be used which will read graphic symbol 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 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 be opened \n" );

}

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 figurer scientific discipline portal for geeks

Output:

output fgetc

In the above code, the approach is to read i grapheme from the file and cheque if information technology is non EOF, if it is non so 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 graphic symbol is read using fgetc().
  • Using feof() function check for terminate of file. since feof() returns truthful subsequently information technology reaches the end.
  • Use logical Not operator(!) so that when it reaches end condition get false and loop stop.

Below is the C program to implement the above arroyo:

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 tin't exist 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 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 office or returns Nada if can non read.

Syntax:

char * fgets(char *str, int size, FILE * ptr);

Hither,
str: It is string in which fgets() store string after reading it 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 one grapheme at a fourth dimension until we attain the end of the file.
  • When nosotros accomplish the stop of the file fgets() can't read and returns Cipher and the plan will stop reading.

Below is the C program to implement the higher up approach:

C

#include <stdio.h>

#include <stdlib.h>

#include <cord.h>

int main()

{

FILE * ptr;

char str[l];

ptr = fopen ( "test.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 ( "%southward" , str);

}

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A calculator scientific discipline 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 information technology in variables.
  • The data in the buffer is printed on the console till the end of the file is reached.

C++

#include <stdio.h>

int main()

{

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

if (ptr == Nil) {

printf ( "no such file." );

return 0;

}

char buf[100];

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

buf)

== i)

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

return 0;

}

Output:

fread()

fread() makes it easier to read blocks of information from a file. For example, in the case 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 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:

  • It beginning, 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 not trivially copy-able, and then the behavior is undefined and if the value of size or count is equal to nil, then this plan volition simply return 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct Course {

char cname[xxx];

char sdate[30];

};

int main()

{

FILE * of;

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

if (of == NULL) {

fprintf (stderr,

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

exit (1);

}

struct Course inp1 = { "Algorithms" ,

"30OCT" };

struct Course inp2 = { "DataStructures" ,

"28SEPT" };

struct Course inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Class),

i, of);

fwrite (&inp2, sizeof ( struct Course),

1, of);

fwrite (&inp3, sizeof ( struct Course),

1, of);

if ( fwrite != 0)

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

else

printf ( "Fault writing file !\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" );

leave (i);

}

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

i, inf))

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

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


langstonthaide.blogspot.com

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

0 Response to "Read One Character at a Time From File C++"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel