C++ How to Read a File and Refer to Another File

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

  1. fgetc() This office 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 office 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 shut the file using the function fclose().

Let's begin 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 character (ASCII value) read from the stream and advances the read position to the side by side character. This function returns a constant EOF (-one) when there 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 role by reading characters 1 by 1.
  • Do-While loop will be used which will read graphic symbol until it reaches and of file.
  • When it reaches end it returns  EOF graphic symbol (-1).

Using EOF:
Below is the C program to implement the higher up 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 exist opened \northward" );

}

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

Output:

output fgetc

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

Using feof():
feof() function takes file pointer as argument and returns truthful if pointer reaches the end of the file.

Syntax:

int feof(FILE *ptr);

Arroyo:

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

Below is the C program to implement the to a higher place 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 exist opened \n" );

}

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

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 i cord 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: Information technology is string in which fgets() shop 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 character at a time until we reach the terminate of the file.
  • When we reach the end of the file fgets() tin can't read and returns Cipher and the program will terminate reading.

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

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

FILE * ptr;

char str[l];

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

if (Nix == ptr) {

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

}

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

while ( fgets (str, l, 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, …)

Arroyo:

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

C++

#include <stdio.h>

int main()

{

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)

== 1)

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

return 0;

}

Output:

fread()

fread() makes information technology easier to read blocks of data from a file. For instance, in the case of reading a construction from the file, information technology 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 arrow 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:

  • Information technology first, 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).
  • Co-ordinate to the no. of characters read, the indicator file position is incremented.
  • If the objects read are not trivially re-create-able, so the beliefs 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 <string.h>

struct Grade {

char cname[30];

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 Class inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Form),

ane, of);

fwrite (&inp2, sizeof ( struct Course),

1, of);

fwrite (&inp3, sizeof ( struct Grade),

i, of);

if ( fwrite != 0)

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

else

printf ( "Error writing file !\due north" );

fclose (of);

FILE * inf;

struct Course inp;

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

if (inf == Cipher) {

fprintf (stderr,

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

exit (1);

}

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

i, inf))

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

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


mcgeetoger1936.blogspot.com

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

0 Response to "C++ How to Read a File and Refer to Another File"

Postar um comentário

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel