Read in Entire File C as String

C programming linguistic communication supports iv 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 character 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 up 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 part fclose().

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

fgetc()

fgetc() reads characters pointed by the office pointer at that time. On each successful read, information technology returns the graphic symbol (ASCII value) read from the stream and advances the read position to the adjacent grapheme. This role returns a constant EOF (-1) when there is no content to read or an unsuccessful read.

Syntax:

int fgetc(FILE *ptr);

Arroyo:

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

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

Output:

output fgetc

In the to a higher place code, the approach is to read one grapheme from the file and check if it is not EOF, if it is not then print it and if it is then stop reading.

Using feof():
feof() function takes file pointer every bit argument and returns truthful 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 bank check for end of file. since feof() returns truthful after it reaches the terminate.
  • Use logical NOT operator(!) and then that when information technology reaches end condition become simulated and loop stop.

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 tin can't be opened \due north" );

}

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

while (! feof (ptr)) {

ch = fgetc (ptr);

printf ( "%c" , ch);

}

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A calculator science portal for geeks

Output:

output feof

fgets()

fgets() reads i 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() shop cord after reading it from file.
size: Information technology is maximum characters to read from stream.
ptr: It is file arrow.

Approach:

  • In this approach, the contents of the file are read one character at a time until we reach the end of the file.
  • When we attain the cease of the file fgets() can't read and returns NULL and the programme will stop reading.

Beneath is the C programme to implement the in a higher place approach:

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

FILE * ptr;

char str[50];

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

if (NULL == ptr) {

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

}

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

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

printf ( "%s" , str);

}

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A estimator 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 information technology 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 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 ( "%south\north" , 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 structure 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 chemical element to be read.
nmemb: This is the number of elements, each one with a size of size bytes.
stream: This is the arrow to a FILE object that specifies an input stream.

Approach:

  • It kickoff, reads the count number of objects, each ane 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 non trivially copy-able, and then the behavior is undefined and if the value of size or count is equal to nix, then this program will simply return 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct Form {

char cname[xxx];

char sdate[30];

};

int primary()

{

FILE * of;

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

if (of == Null) {

fprintf (stderr,

"\nError to open the file\due north" );

go out (ane);

}

struct Class inp1 = { "Algorithms" ,

"30OCT" };

struct Course inp2 = { "DataStructures" ,

"28SEPT" };

struct Form inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Course),

ane, of);

fwrite (&inp2, sizeof ( struct Grade),

i, of);

fwrite (&inp3, sizeof ( struct Form),

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

if (inf == Zippo) {

fprintf (stderr,

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

exit (1);

}

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

1, inf))

printf ( "Course Proper name = %due south Started = %s\due north" ,

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


burnsbresteers.blogspot.com

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

0 Response to "Read in Entire File C as String"

إرسال تعليق

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel