How to Read Input From a File C++

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

  1. fgetc() This part is used to read a single character from the file.
  2. fgets() This role is used to read strings from files.
  3. fscanf() This function is used to read the cake 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 up a file using the part fopen() and shop 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().

Let'due south begin discussing each of these functions in detail.

fgetc()

fgetc() reads characters pointed by the function 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 grapheme. This function returns a constant 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 part by reading characters one by 1.
  • Practice-While loop will be used which volition read character until information technology reaches and of file.
  • When it reaches cease it returns  EOF character (-1).

Using EOF:
Beneath 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 ch;

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

if (NULL == ptr) {

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

}

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

exercise {

ch = fgetc (ptr);

printf ( "%c" , ch);

} while (ch != EOF);

fclose (ptr);

render 0;

}

Input File:

GeeksforGeeks | A informatics portal for geeks

Output:

output fgetc

In the above code, the arroyo is to read ane graphic symbol from the file and check if information technology is non EOF, if information technology is not then print information technology and if it is then cease reading.

Using feof():
feof() part 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 character is read using fgetc().
  • Using feof() function check for end of file. since feof() returns truthful after it reaches the end.
  • Use logical Not operator(!) then that when it reaches stop condition go false and loop end.

Below is the C program to implement the above approach:

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int primary()

{

FILE * ptr;

char ch;

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

if (NULL == ptr) {

printf ( "file tin can'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 scientific discipline 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 past part or returns Aught if tin not read.

Syntax:

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

Here,
str: It is string in which fgets() shop string after reading information technology from file.
size: It is maximum characters to read from stream.
ptr: Information technology is file pointer.

Arroyo:

  • In this approach, the contents of the file are read one character at a fourth dimension until we reach the end of the file.
  • When we accomplish the end of the file fgets() tin't read and returns Nix and the program volition cease reading.

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 str[l];

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

if (Zippo == ptr) {

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

}

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

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 information technology in variables.
  • The information in the buffer is printed on the console till the stop of the file is reached.

C++

#include <stdio.h>

int master()

{

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

if (ptr == NULL) {

printf ( "no such file." );

return 0;

}

char buf[100];

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

buf)

== ane)

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

return 0;

}

Output:

fread()

fread() makes it easier to read blocks of data from a file. For instance, in the example of reading a structure from the file, it becomes an like shooting fish in a barrel 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 retentivity with a minimum size of size*nmemb bytes.
size: This is the size in bytes of each element to exist 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 total corporeality 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 copy-able, then the behavior is undefined and if the value of size or count is equal to zilch, so this program volition merely render 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <cord.h>

struct Form {

char cname[30];

char sdate[30];

};

int principal()

{

FILE * of;

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

if (of == Zero) {

fprintf (stderr,

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

get out (one);

}

struct Class inp1 = { "Algorithms" ,

"30OCT" };

struct Class inp2 = { "DataStructures" ,

"28SEPT" };

struct Course inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Course),

1, of);

fwrite (&inp2, sizeof ( struct Class),

i, of);

fwrite (&inp3, sizeof ( struct Course),

one, of);

if ( fwrite != 0)

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

else

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

fclose (of);

FILE * inf;

struct Form inp;

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

if (inf == NULL) {

fprintf (stderr,

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

exit (i);

}

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

i, inf))

printf ( "Course Proper noun = %south Started = %s\n" ,

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


smithlimsere1993.blogspot.com

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

0 Response to "How to Read Input From a File C++"

Publicar un comentario

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel