C++ How to Read and Write Files

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 graphic symbol from the file.
  2. fgets() This function 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 office 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 whatever 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 particular.

fgetc()

fgetc() reads characters pointed past the function 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 grapheme. This function returns a abiding EOF (-1) when at that place is no content to read or an unsuccessful read.

Syntax:

int fgetc(FILE *ptr);

Approach:

  • This plan reads the whole content of the file, using this function by reading characters one by ane.
  • Do-While loop will be used which will read character until it reaches and of file.
  • When information technology reaches end it returns  EOF grapheme (-i).

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

if (Zip == 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);

render 0;

}

Input File:

GeeksforGeeks | A computer scientific discipline portal for geeks

Output:

output fgetc

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

Using feof():
feof() part takes file pointer every bit 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() part check for finish of file. since feof() returns true subsequently it reaches the stop.
  • Use logical Not operator(!) and so that when information technology reaches stop status get fake and loop stop.

Beneath 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 ( "examination.txt" , "r" );

if (NULL == 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:

output feof

fgets()

fgets() reads one string at a time from the file. fgets() returns a cord if it is successfully read past function or returns NULL if can non read.

Syntax:

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

Hither,
str: It is string in which fgets() store cord after reading it from file.
size: It is maximum characters to read from stream.
ptr: It is file pointer.

Approach:

  • In this approach, the contents of the file are read one character at a fourth dimension until we achieve the end of the file.
  • When nosotros achieve the end of the file fgets() can't read and returns NULL and the program will cease reading.

Below is the C program to implement the in a higher place approach:

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

FILE * ptr;

char str[fifty];

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

if (NULL == ptr) {

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

}

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

while ( fgets (str, fifty, ptr) != Zippo) {

printf ( "%s" , str);

}

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A computer scientific discipline portal for geeks

Output:

Output fgets

fscanf()

fscanf() reads formatted input from a stream.

Syntax:

int fscanf(FILE *ptr, const char *format, …)

Arroyo:

  • fscanf reads formatted data from the files and stores it in variables.
  • The data in the buffer is printed on the panel till the end of the file is reached.

C++

#include <stdio.h>

int chief()

{

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

if (ptr == Cypher) {

printf ( "no such file." );

render 0;

}

char buf[100];

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

buf)

== 1)

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

return 0;

}

Output:

fread()

fread() makes information technology easier to read blocks of data from a file. For instance, in the instance of reading a construction from the file, information technology 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 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 outset, 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 beliefs is undefined and if the value of size or count is equal to goose egg, then this program will simply return 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct Course {

char cname[30];

char sdate[30];

};

int main()

{

FILE * of;

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

if (of == NULL) {

fprintf (stderr,

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

exit (1);

}

struct Course inp1 = { "Algorithms" ,

"30OCT" };

struct Form inp2 = { "DataStructures" ,

"28SEPT" };

struct Course inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Course),

i, of);

fwrite (&inp2, sizeof ( struct Grade),

1, of);

fwrite (&inp3, sizeof ( struct Course),

1, of);

if ( fwrite != 0)

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

else

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

fclose (of);

FILE * inf;

struct Course inp;

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

if (inf == Nil) {

fprintf (stderr,

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

leave (one);

}

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

i, inf))

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

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


wendtbralis55.blogspot.com

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

0 Response to "C++ How to Read and Write Files"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel