C Dateien lesen
Eine Datei lesen
Im vorherigen Kapitel haben wir mit den Modi w
und a
innerhalb der fopen()
-Funktion.
Zum Lesen (read) aus einer Datei können Sie den r
-Modus verwenden:
Beispiel
FILE *fptr;
// Öffnen Sie eine Datei im Lesemodus
fptr = fopen("filename.txt", "r");
Dadurch wird die filename.txt
zum Lesen geöffnet.
Es erfordert ein wenig Arbeit, eine Datei in C zu lesen. Bleiben Sie dran! Wir begleiten Sie Schritt für Schritt.
Als Nächstes müssen wir eine Zeichenfolge erstellen, die groß genug sein sollte, um den Inhalt der Datei zu speichern.
Lassen Sie uns beispielsweise eine Zeichenfolge erstellen, die bis zu 100 Zeichen speichern kann:
Beispiel
FILE *fptr;
// Öffnen Sie eine Datei im Lesemodus
fptr = fopen("filename.txt", "r");
// Speichern Sie den Inhalt der Datei
char myString[100];
Um den Inhalt zu lesen filename.txt
, Wir können die Funktion fgets()
verwenden.
Die Funktion fgets()
benötigt drei Parameter:
Beispiel
fgets(myString, 100, fptr);
- Der erste Parameter gibt an, wo der Dateiinhalt gespeichert werden soll, der sich im soeben erstellten Array
myString
befindet. - Der zweite Parameter gibt die maximale Größe der zu lesenden Daten an, die mit der Größe von übereinstimmen sollte
myString
(100
). - Der dritte Parameter erfordert einen Dateizeiger, der zum Lesen der Datei verwendet wird (in unserem Beispiel
fptr
).
Jetzt können wir die Zeichenfolge drucken, die den Inhalt der Datei ausgibt:
Beispiel
FILE *fptr;
// Öffnen Sie eine Datei im Lesemodus
fptr = fopen("filename.txt", "r");
// Speichern Sie den Inhalt der Datei
char myString[100];
// Lesen Sie den Inhalt und bewahren Sie ihn darin auf myString
fgets(myString, 100, fptr);
// Drucken Sie den Dateiinhalt aus
printf("%s", myString);
// Schließen Sie die Datei
fclose(fptr);
Hello World!
Notiz: Die Funktion fgets
liest nur die erste Zeile der Datei. Wenn Sie sich erinnern, waren darin zwei Textzeilen filename.txt
.
Um jede Zeile der Datei zu lesen, können Sie eine while
-Schleife verwenden:
Beispiel
FILE *fptr;
// Öffnen Sie eine Datei im Lesemodus
fptr = fopen("filename.txt", "r");
// Speichern Sie den Inhalt der Datei
char myString[100];
// Lesen Sie den Inhalt und drucken Sie ihn aus
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// Schließen Sie die Datei
fclose(fptr);
Hello World!
Hi everybody!
Gute Übung
Wenn Sie versuchen, eine Datei zum Lesen zu öffnen, die nicht existiert, wird die Funktion fopen()
zurückgegeben NULL
.
Tipp: Als bewährte Vorgehensweise können wir zum Testen eine if
-Anweisung verwenden NULL
, und stattdessen etwas Text ausgeben (wenn die Datei nicht existiert):
Beispiel
FILE *fptr;
// Öffnen Sie eine Datei im Lesemodus
fptr = fopen("loremipsum.txt", "r");
// Geben Sie Text aus, wenn die Datei nicht vorhanden ist
if(fptr == NULL) {
printf("Die Datei kann nicht geöffnet werden.");
}
// Schließen Sie die Datei
fclose(fptr);
Wenn die Datei nicht vorhanden ist, wird der folgende Text gedruckt:
Not able to open the file.
Vor diesem Hintergrund können wir einen nachhaltigeren Code erstellen, wenn wir unser obiges Beispiel „Eine Datei lesen“ noch einmal verwenden:
Beispiel
Wenn die Datei vorhanden ist, lesen Sie den Inhalt und drucken Sie ihn aus. Wenn die Datei nicht vorhanden ist, drucken Sie eine Meldung aus:
FILE *fptr;
// Öffnen Sie eine Datei im Lesemodus
fptr = fopen("filename.txt", "r");
// Speichern Sie den Inhalt der Datei
char myString[100];
// Wenn die Datei vorhanden ist
if(fptr != NULL) {
// Lesen Sie den Inhalt und drucken Sie ihn aus
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// Wenn die Datei nicht existiert
} else {
printf("Die Datei kann nicht geöffnet werden.");
}
// Schließen Sie die Datei
fclose(fptr);
Hello World!
Hi everybody!