Read Files

0

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);
  1. Der erste Parameter gibt an, wo der Dateiinhalt gespeichert werden soll. Er befindet sich im soeben erstellten myString Array.
  2. Der zweite Parameter gibt die maximale Größe der zu lesenden Daten an, die der Größe von myString (100) entsprechen sollte.
  3. 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!
Nach oben scrollen