logo

C-Programm zum Lesen des Inhalts der gesamten Datei

C-Programmiersprache unterstützt vier vordefinierte Funktionen zum Lesen von Inhalten aus einer Datei, definiert in der Header-Datei stdio.h:

  1. fgetc() Mit dieser Funktion wird ein einzelnes Zeichen aus der Datei gelesen.
  2. fgets() Diese Funktion wird verwendet, um Zeichenfolgen aus Dateien zu lesen.
  3. fscanf() Diese Funktion wird verwendet, um formatierte Eingaben aus einer Datei zu lesen.
  4. Angst() Diese Funktion wird verwendet, um den Block der Rohbytes aus Dateien zu lesen. Dies wird zum Lesen von Binärdateien verwendet.

Schritte zum Lesen einer Datei:



  • Öffnen Sie eine Datei mit der Funktion fopen() und speichern Sie die Referenz der Datei in einem FILE-Zeiger.
  • Lesen Sie den Inhalt der Datei mit einer der folgenden Funktionen: fgetc(), fgets(), fscanf() oder fread().
  • Datei: Schließen Sie die Datei mit der Funktion fclose().

Beginnen wir damit, jede dieser Funktionen im Detail zu besprechen.

Arraylist und Linkedlist

fgetc()

fgetc() liest Zeichen, auf die der Funktionszeiger zu diesem Zeitpunkt zeigt. Bei jedem erfolgreichen Lesevorgang wird das aus dem Stream gelesene Zeichen (ASCII-Wert) zurückgegeben und die Leseposition auf das nächste Zeichen verschoben. Diese Funktion gibt eine konstante EOF (-1) zurück, wenn kein Inhalt zum Lesen vorhanden ist oder der Lesevorgang fehlgeschlagen ist.



Syntax:

int fgetc(FILE *ptr);

Ansatz:



  • Dieses Programm liest den gesamten Inhalt der Datei, indem es mit dieser Funktion Zeichen einzeln liest.
  • Es wird eine Do-While-Schleife verwendet, die Zeichen liest, bis das Ende der Datei erreicht ist.
  • Wenn das Ende erreicht ist, wird das EOF-Zeichen (-1) zurückgegeben.

Verwendung von EOF:
Nachfolgend finden Sie das C-Programm zur Implementierung des oben genannten Ansatzes:

C




// C program to implement> // the above approach> #include> #include> #include> // Driver code> int> main()> {> >FILE>* ptr;> >char> ch;> >// Opening file in reading mode> >ptr =>fopen>(>'test.txt'>,>'r'>);> >if> (NULL == ptr) {> >printf>(>'file can't be opened '>);> >}> >printf>(>'content of this file are '>);> >// Printing what is written in file> >// character by character using loop.> >do> {> >ch =>fgetc>(ptr);> >printf>(>'%c'>, ch);> >// Checking if character is not EOF.> >// If it is EOF stop reading.> >}>while> (ch != EOF);> >// Closing the file> >fclose>(ptr);> >return> 0;> }>

>

>

Eingabedatei:

techcodeview.com | A computer science portal for geeks>

Ausgabe:

Im obigen Code besteht der Ansatz darin, ein Zeichen aus der Datei zu lesen und zu prüfen, ob es kein EOF ist. Ist dies nicht der Fall, drucken Sie es aus und beenden Sie den Lesevorgang, wenn dies der Fall ist.

Mit feof():
Die Funktion feof() verwendet den Dateizeiger als Argument und gibt true zurück, wenn der Zeiger das Ende der Datei erreicht.

Syntax:

int feof(FILE *ptr);

Ansatz:

  • Bei diesem Ansatz wird ein Zeichen mit fgetc() gelesen.
  • Verwenden Sie die Funktion feof(), um das Ende der Datei zu überprüfen. da feof() nach Erreichen des Endes true zurückgibt.
  • Verwenden Sie den logischen NOT-Operator (!), sodass die Endbedingung bei Erreichen falsch wird und die Schleife stoppt.

Nachfolgend finden Sie das C-Programm zur Implementierung des oben genannten Ansatzes:

C




// C program to implement> // the above approach> #include> #include> #include> // Driver code> int> main()> {> >FILE>* ptr;> >char> ch;> >ptr =>fopen>(>'test.txt'>,>'r'>);> >if> (NULL == ptr) {> >printf>(>'file can't be opened '>);> >}> >printf>(>'content of this file are '>);> >while> (!>feof>(ptr)) {> >ch =>fgetc>(ptr);> >printf>(>'%c'>, ch);> >}> >fclose>(ptr);> >return> 0;> }>

>

>

Eingabedatei:

techcodeview.com | A computer science portal for geeks>

Ausgabe:

fgets()

fgets() liest jeweils eine Zeichenfolge aus der Datei. fgets() gibt einen String zurück, wenn er von der Funktion erfolgreich gelesen wurde, oder gibt NULL zurück, wenn er nicht gelesen werden kann.

Syntax:

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

Hier,
str: Es ist eine Zeichenfolge, in der fgets() die Zeichenfolge speichert, nachdem sie aus der Datei gelesen wurde.
Größe: Es können maximal Zeichen aus dem Stream gelesen werden.
ptr: Es ist ein Dateizeiger.

Ansatz:

  • Bei diesem Ansatz wird der Inhalt der Datei zeichenweise gelesen, bis das Ende der Datei erreicht ist.
  • Wenn wir das Ende der Datei erreichen, kann fgets() nicht lesen und gibt NULL zurück und das Programm stoppt den Lesevorgang.

Nachfolgend finden Sie das C-Programm zur Implementierung des oben genannten Ansatzes:

C




// C program to implement> // the above approach> #include> #include> #include> // Driver code> int> main()> {> >FILE>* ptr;> >char> str[50];> >ptr =>fopen>(>'test.txt'>,>'a+'>);> >if> (NULL == ptr) {> >printf>(>'file can't be opened '>);> >}> >printf>(>'content of this file are '>);> >while> (>fgets>(str, 50, ptr) != NULL) {> >printf>(>'%s'>, str);> >}> >fclose>(ptr);> >return> 0;> }>

>

>

Eingabedatei:

techcodeview.com | A computer science portal for geeks>

Ausgabe:

fscanf()

fscanf() liest formatierte Eingaben aus einem Stream.

Syntax:

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

Ansatz:

  • fscanf liest formatierte Daten aus den Dateien und speichert sie in Variablen.
  • Die Daten im Puffer werden auf der Konsole gedruckt, bis das Ende der Datei erreicht ist.

C++




// C program to implement> // the above approach> #include> // Driver code> int> main()> {> >FILE>* ptr =>fopen>(>'abc.txt'>,>'r'>);> >if> (ptr == NULL) {> >printf>(>'no such file.'>);> >return> 0;> >}> >/* Assuming that test.txt has content> >in below format> >NAME AGE CITY> >abc 12 hyderbad> >bef 25 delhi> >cce 65 bangalore */> >char> buf[100];> >while> (>fscanf>(ptr,>'%*s %*s %s '>,> >buf)> >== 1)> >printf>(>'%s '>, buf);> >return> 0;> }>

>

>

Ausgabe:

Angst()

fread() erleichtert das Lesen von Datenblöcken aus einer Datei. Wenn Sie beispielsweise eine Struktur aus einer Datei lesen möchten, ist das Lesen mit fread eine einfache Aufgabe.

Syntax:

Java-Tutorial für Anfänger

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

ptr: Dies ist der Zeiger auf einen Speicherblock mit einer Mindestgröße von size*nmemb Bytes.
Größe: Dies ist die Größe in Bytes jedes zu lesenden Elements.
nmemb: Dies ist die Anzahl der Elemente, jedes mit der Größe size bytes.
Strom: Dies ist der Zeiger auf ein FILE-Objekt, das einen Eingabestream angibt.

Ansatz:

  • Zunächst wird die Anzahl der Objekte aus dem angegebenen Eingabestream gelesen, jedes mit der Größe size bytes.
  • Die Gesamtzahl der gelesenen Bytes beträgt bei Erfolg (Größe*Anzahl).
  • Laut der Nr. Anzahl der gelesenen Zeichen wird die Position der Indikatordatei erhöht.
  • Wenn die gelesenen Objekte nicht trivial kopierbar sind, ist das Verhalten undefiniert und wenn der Wert von size oder count gleich Null ist, gibt dieses Programm einfach 0 zurück.

C++




// C program to implement> // the above approach> #include> #include> #include> // Structure to store> // course details> struct> Course {> >char> cname[30];> >char> sdate[30];> };> // Driver code> int> main()> {> >FILE>* of;> >of =>fopen>(>'test.txt'>,>'w'>);> >if> (of == NULL) {> >fprintf>(stderr,> >' Error to open the file '>);> >exit>(1);> >}> >struct> Course inp1 = {>'Algorithms'>,> >'30OCT'> };> >struct> Course inp2 = {>'DataStructures'>,> >'28SEPT'> };> >struct> Course inp3 = {>'Programming'>,> >'1NOV'> };> >fwrite>(&inp1,>sizeof>(>struct> Course),> >1, of);> >fwrite>(&inp2,>sizeof>(>struct> Course),> >1, of);> >fwrite>(&inp3,>sizeof>(>struct> Course),> >1, of);> >if> (>fwrite> != 0)> >printf>(>'Contents to file written successfully ! '>);> >else> >printf>(>'Error writing file ! '>);> >fclose>(of);> >// File pointer to read from file> >FILE>* inf;> >struct> Course inp;> >inf =>fopen>(>'test.txt'>,>'r'>);> >if> (inf == NULL) {> >fprintf>(stderr,> >' Error to open the file '>);> >exit>(1);> >}> >while> (>fread>(&inp,>sizeof>(>struct> Course),> >1, inf))> >printf>(>'Course Name = %s Started = %s '>,> >inp.cname, inp.sdate);> >fclose>(inf);> }>

>

>

Ausgabe: