Reading Info From a File in C++

C programming language supports four 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 character from the file.
  2. fgets() This office is used to read strings from files.
  3. fscanf() This office is used to read the block of raw bytes from files. This is used to read binary files.
  4. 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 function fclose().

Let'southward begin discussing each of these functions in detail.

fgetc()

fgetc() reads characters pointed past the function pointer at that fourth dimension. On each successful read, information technology returns the character (ASCII value) read from the stream and advances the read position to the side by side character. This function returns a constant EOF (-1) 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 one past i.
  • Practise-While loop will be used which volition read character until it reaches and of file.
  • When it reaches end it returns  EOF character (-1).

Using EOF:
Beneath is the C program to implement the above arroyo-

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int primary()

{

FILE * ptr;

char ch;

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

if (NULL == ptr) {

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

}

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

practise {

ch = fgetc (ptr);

printf ( "%c" , ch);

} while (ch != EOF);

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A computer science portal for geeks

Output:

output fgetc

In the above lawmaking, the approach is to read one grapheme from the file and cheque if it is not EOF, if it is not and then print it and if it is then stop reading.

Using feof():
feof() function takes file pointer as statement and returns truthful if pointer reaches the stop 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 afterwards it reaches the finish.
  • Use logical NOT operator(!) so that when it reaches stop condition become 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 \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 information 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);

Here,
str: It 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 graphic symbol at a time until nosotros reach the stop of the file.
  • When we reach the finish of the file fgets() can't read and returns Nada and the program volition stop reading.

Beneath is the C program to implement the to a higher place arroyo:

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

FILE * ptr;

char str[fifty];

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

if (NULL == ptr) {

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

}

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

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

printf ( "%due south" , 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 information from the files and stores it in variables.
  • The data in the buffer is printed on the panel till the terminate of the file is reached.

C++

#include <stdio.h>

int main()

{

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

if (ptr == Goose egg) {

printf ( "no such file." );

return 0;

}

char buf[100];

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

buf)

== 1)

printf ( "%due south\northward" , buf);

render 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:

  • It commencement, reads the count number of objects, each one 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, then the behavior is undefined and if the value of size or count is equal to zero, then this program will simply return 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <cord.h>

struct Course {

char cname[30];

char sdate[30];

};

int main()

{

FILE * of;

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

if (of == Zip) {

fprintf (stderr,

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

exit (1);

}

struct Form inp1 = { "Algorithms" ,

"30OCT" };

struct Grade inp2 = { "DataStructures" ,

"28SEPT" };

struct Form inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Course),

ane, of);

fwrite (&inp2, sizeof ( struct Grade),

one, of);

fwrite (&inp3, sizeof ( struct Course),

1, of);

if ( fwrite != 0)

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

else

printf ( "Fault writing file !\north" );

fclose (of);

FILE * inf;

struct Grade inp;

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

if (inf == NULL) {

fprintf (stderr,

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

leave (1);

}

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

1, inf))

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

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


bauergreped.blogspot.com

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

0 Response to "Reading Info From a File in C++"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel