Read Values From File and Store Them to Array C

C programming language supports four pre-defined 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 function is used to read strings from files.
  3. fscanf() This part is used to read the cake of raw bytes from files. This is used to read binary files.
  4. fread() This part is used to read formatted input from a file.

Steps To Read A File:

  • Open a file using the function fopen() and shop 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's begin discussing each of these functions in detail.

fgetc()

fgetc() reads characters pointed by the part pointer at that time. On each successful read, it returns the character (ASCII value) read from the stream and advances the read position to the adjacent graphic symbol. 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 office past reading characters one past i.
  • Do-While loop will be used which will read graphic symbol until it reaches and of file.
  • When information technology reaches end it returns  EOF graphic symbol (-1).

Using EOF:
Below is the C plan to implement the above approach-

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int principal()

{

FILE * ptr;

char ch;

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

if (Nada == ptr) {

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

}

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 scientific discipline portal for geeks

Output:

output fgetc

In the above code, the approach 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 it is then stop reading.

Using feof():
feof() function takes file pointer equally statement 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 check for cease of file. since feof() returns true subsequently it reaches the end.
  • Use logical Not operator(!) and then that when information technology reaches stop condition get simulated and loop stop.

Below is the C program to implement the above approach:

C

#include <stdio.h>

#include <stdlib.h>

#include <cord.h>

int master()

{

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 \north" );

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 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 arrow.

Approach:

  • In this approach, the contents of the file are read one graphic symbol at a time until we reach the end of the file.
  • When we accomplish the end of the file fgets() tin't read and returns NULL and the program will stop reading.

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

C

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int principal()

{

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, 50, ptr) != NULL) {

printf ( "%south" , str);

}

fclose (ptr);

return 0;

}

Input File:

GeeksforGeeks | A computer 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 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 %south " ,

buf)

== 1)

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

return 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 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 arrow to a FILE object that specifies an input stream.

Approach:

  • Information technology start, 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 re-create-able, so the behavior is undefined and if the value of size or count is equal to zero, then this program will simply render 0.

C++

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct Course {

char cname[thirty];

char sdate[xxx];

};

int main()

{

FILE * of;

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

if (of == NULL) {

fprintf (stderr,

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

exit (1);

}

struct Course inp1 = { "Algorithms" ,

"30OCT" };

struct Course inp2 = { "DataStructures" ,

"28SEPT" };

struct Course inp3 = { "Programming" ,

"1NOV" };

fwrite (&inp1, sizeof ( struct Class),

1, of);

fwrite (&inp2, sizeof ( struct Course),

one, of);

fwrite (&inp3, sizeof ( struct Course),

one, of);

if ( fwrite != 0)

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

else

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

fclose (of);

FILE * inf;

struct Class inp;

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

if (inf == NULL) {

fprintf (stderr,

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

exit (1);

}

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

1, inf))

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

inp.cname, inp.sdate);

fclose (inf);

}

Output:

output fread


smithmarjohishe00.blogspot.com

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

0 Response to "Read Values From File and Store Them to Array C"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel