Lesen bis zum Ende der Datei in C
-
eine Übersicht über
End-of-File(EOF)
in C - Dateiverwaltung in C
-
Verwenden Sie
EOF
zum Lesen bis zum Ende der Datei in C
In diesem Artikel erklären wir, wie man mit der Programmiersprache C in eine Datei schreibt und sie liest, bis sie vollständig gelesen wurde.
eine Übersicht über End-of-File(EOF)
in C
EOF
ist die Abkürzung für end of file
. Es zeigt an, dass das Ende der Datei erreicht ist und dass es über diesen Punkt hinaus keine weiteren Daten geben wird.
STRG+D
ist das Zeichen, das auf Linux- und OS X-Computern eingegeben werden muss, um eine End-of-File-Bedingung auszulösen. Die Tastenkombination für Windows ist Strg+Z.
Dieses Zeichen funktioniert nur, wenn es das erste Zeichen in einer Zeile ist, d. h. das erste Zeichen nach einem ENTER.
. Die Voraussetzungen hierfür sind jedoch je nach Betriebssystem unterschiedlich.
Möglicherweise bemerkt das System das EOF-Zeichen erst, nachdem Sie es mit einem ENTER
gefolgt haben. Dies liegt daran, dass die Konsoleneingabe normalerweise zeilenorientiert ist.
Dateiverwaltung in C
Viele dauerhafte Daten werden in einer Datei gespeichert, wenn man sich dafür entscheidet. Wie viele andere Programmiersprachen hat C die folgenden Funktionen zum Verwalten von Dateien.
-
Erstellen Sie eine Datei
Erstellen einer neuen Datei mit
fopen().
-
Öffne einen Ordner
Öffnen einer neuen, bereits bestehenden Datei mit
fopen().
. -
Lesen Sie eine Datei
Lesen eines Datenblocks aus einer Datei mit dem Befehl
fscanf()
. Dasgetc()
ist ein Befehl, der jeweils ein Zeichen aus einer Datei liest, und wir verwenden die Methodegetw()
, um eine Ganzzahl aus einer Datei zu lesen. -
In eine Datei schreiben
Mit
fprintf()
wird ein Datenblock in eine Datei geschrieben. Der Befehlputc()
schreibt ein einzelnes Zeichen in eine Datei, undputw()
ist eine Abkürzung für das Schreiben einer ganzen Zahl in eine Datei. -
Schließen Sie eine Datei
Der Prozess des Schließens einer Datei mit dem Befehl
fclose()
.
Verwenden Sie EOF
zum Lesen bis zum Ende der Datei in C
Schauen wir uns ein Beispiel an, in dem wir alle Verwaltungsfunktionen verwenden, um eine Datei bis zu ihrem Ende zu lesen.
Zu Beginn müssen Sie zuerst eine main()
-Funktion konstruieren und dann die notwendigen Bibliotheken importieren, bevor Sie fortfahren können.
#include <stdio.h>
int main() {}
Deklarieren Sie innerhalb der Hauptfunktion eine Variable namens fp
. Diese Variable ist ein Dateizeiger, der auf den Typ Datei
verweist.
FILE* fp;
Erstellen Sie eine Variable mit dem Namen ch
und einen Namenszeiger mit der Bezeichnung * name,
, die beide vom Datentyp char
sein sollten. Der Namenszeiger sollte den Dateinamen
enthalten.
char ch;
char* name = "eof.txt";
Wir werden nun eine Datei mit der eingebauten Funktion fopen()
öffnen. Eine Datei kann zum Lesen und Schreiben erstellt oder geöffnet werden.
Der Name der Datei und der Modus w
sind also die Parameter, die wir der Funktion fopen()
übergeben. Der Buchstabe W
zeigt an, dass die Datei in der aktuellen Situation im Schreibmodus geöffnet ist.
fp = fopen(name, "w");
printf("Enter the text to write on the file\n");
Falls die Datei noch nicht auf dem System vorhanden ist, wird sie zuerst generiert und dann geöffnet. Wenn eine Datei auf dem System existiert, wird diese Methode diese sofort öffnen
.
Wir implementieren eine while
-Schleife, die weiter iteriert, bis sie das Ende der Datei erreicht, indem wir die EOF
-Variable verwenden. Innerhalb der Schleife schreiben wir den Text, den der Benutzer bereitgestellt hat, indem wir die Funktion putc()
verwenden und ihr die Parameter ch
für den Char-Typ und *fp
für den Dateityp übergeben.
while ((ch = getchar()) != EOF) {
putc(ch, fp);
}
Wir haben den Text auf die Datei geschrieben. Schließen wir die Datei mit der Funktion fclose()
.
fclose(fp);
Der nächste Schritt besteht darin, die Datei zu lesen und ihre Informationen auf der Konsole anzuzeigen. Wir beginnen damit, dem Benutzer eine Nachricht anzuzeigen.
printf("\nText wrote on the file `%s`:\n", name);
Wir werden die Datei erneut mit der Funktion fopen()
öffnen, aber dieses Mal geben wir den Modus als r
an, da dies anzeigt, dass die Datei im Modus Lesen
geöffnet ist.
fp = fopen(name, "r");
Wir implementieren eine while
-Schleife, die weiter iteriert, bis sie das Ende der Datei erreicht, indem wir die EOF
-Variable verwenden. Wir drucken die in der Schleife geschriebenen
Zeichen auf die geöffnete Datei.
while ((ch = getc(fp)) != EOF) {
printf("%c", ch);
}
Mit der Methode feof()
stellen wir fest, ob die Datei fertig geschrieben ist oder nicht. In diesem Fall werden wir den Nutzer benachrichtigen.
if (feof(fp)) printf("\nReached to the end of file.");
Wir haben den Text in der Akte gelesen. Lassen Sie uns die Datei mit der Funktion fclose()
schließen.
fclose(fp);
Vollständiger Quellcode:
#include <stdio.h>
int main() {
FILE* fp;
char ch;
char* name = "eof.txt";
fp = fopen(name, "w");
printf("Enter the text to write on the file\n");
while ((ch = getchar()) != EOF) {
putc(ch, fp);
}
fclose(fp);
printf("\nText wrote on the file `%s`:\n", name);
// reading
fp = fopen(name, "r");
while ((ch = getc(fp)) != EOF) {
printf("%c", ch);
}
if (feof(fp)) printf("\nReached to the end of file.");
fclose(fp);
return 0;
}
Nachdem Sie den Text eingegeben haben, den Sie in die Datei schreiben möchten, drücken Sie die ENTER-Taste, drücken Sie die Strg+Z-Taste und drücken Sie dann die ENTER-Taste erneut, um fortzufahren.
Ausgang:
I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.
LinkedIn