Zurück zu: C Tutorial
Lesen einer Datei
Im vorherigen Kapitel haben wir mithilfe der Modi w
und a
innerhalb der Funktion fopen()
in eine Datei geschrieben.
Um aus einer Datei zu lesen, können Sie den R
Modus verwenden:
Beispiel
FILE *fptr;
// Open a file in read mode
fptr = fopen("filename.txt", "r");
Dadurch wird die Datei „filename.txt
“ zum Lesen geöffnet.
Das Lesen einer Datei in C erfordert ein wenig Arbeit. Bleiben Sie dran! Wir führen Sie Schritt für Schritt durch.
Als Nächstes müssen wir eine Zeichenfolge erstellen, die groß genug ist, um den Inhalt der Datei zu speichern.
Lassen Sie uns beispielsweise eine Zeichenfolge erstellen, die bis zu 100 Zeichen speichern kann:
Beispiel
FILE *fptr;
// Open a file in read mode
fptr = fopen("filename.txt", "r");
// Store the content of the file
char myString[100];
Um den Inhalt von filename.txt
zu lesen, können wir die Funktion fgets()
verwenden.
Die Funktion fgets()
verwendet drei Parameter:
Beispiel
fgets(myString, 100, fptr);
- Der erste Parameter gibt an, wo der Dateiinhalt gespeichert werden soll. Er befindet sich im soeben erstellten
myString
Array. - Der zweite Parameter gibt die maximale Größe der zu lesenden Daten an, die der Größe von
myString
(100
) entsprechen sollte. - Der dritte Parameter erfordert einen Dateizeiger, der zum Lesen der Datei verwendet wird (in unserem Beispiel
fptr
).
Jetzt können wir den String ausdrucken, der den Inhalt der Datei ausgibt:
Beispiel
FILE *fptr;
// Open a file in read mode
fptr = fopen("filename.txt", "r");
// Store the content of the file
char myString[100];
// Read the content and store it inside myString
fgets(myString, 100, fptr);
// Print the file content
printf("%s", myString);
// Close the file
fclose(fptr);
Hello World!
Hinweis: Die Funktion fgets
liest nur die erste Zeile der Datei. Wie Sie sich erinnern, enthielt filename.txt
zwei Textzeilen.
Um jede Zeile der Datei zu lesen, können Sie eine While
Schleife verwenden:
Beispiel
FILE *fptr;
// Open a file in read mode
fptr = fopen("filename.txt", "r");
// Store the content of the file
char myString[100];
// Read the content and print it
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// Close the file
fclose(fptr);
Hello World!
Hi everybody!
Gute Praxis
Wenn Sie versuchen, eine nicht vorhandene Datei zum Lesen zu öffnen, gibt die Funktion fopen()
NULL
zurück.
Tipp: Als bewährte Methode können wir eine if
Anweisung verwenden, um auf NULL
zu testen und stattdessen einen Text auszugeben (wenn die Datei nicht existiert):
Beispiel
FILE *fptr;
// Open a file in read mode
fptr = fopen("loremipsum.txt", "r");
// Print some text if the file does not exist
if(fptr == NULL) {
printf("Not able to open the file.");
}
// Close the file
fclose(fptr);
Wenn die Datei nicht existiert, wird folgender Text ausgedruckt:
Not able to open the file.
Vor diesem Hintergrund können wir einen nachhaltigeren Code erstellen, wenn wir unser obiges Beispiel „Datei lesen“ noch einmal verwenden:
Beispiel
Wenn die Datei existiert, lesen Sie den Inhalt und drucken Sie ihn aus. Wenn die Datei nicht existiert, drucken Sie eine Meldung:
FILE *fptr;
// Open a file in read mode
fptr = fopen("filename.txt", "r");
// Store the content of the file
char myString[100];
// If the file exist
if(fptr != NULL) {
// Read the content and print it
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// If the file does not exist
} else {
printf("Not able to open the file.");
}
// Close the file
fclose(fptr);
Hello World!
Hi everybody!