Lesen bis zum Ende der Datei in C

Waqar Aslam 15 Februar 2024
  1. eine Übersicht über End-of-File(EOF) in C
  2. Dateiverwaltung in C
  3. Verwenden Sie EOF zum Lesen bis zum Ende der Datei in C
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(). Das getc() ist ein Befehl, der jeweils ein Zeichen aus einer Datei liest, und wir verwenden die Methode getw(), um eine Ganzzahl aus einer Datei zu lesen.

  • In eine Datei schreiben

    Mit fprintf() wird ein Datenblock in eine Datei geschrieben. Der Befehl putc() schreibt ein einzelnes Zeichen in eine Datei, und putw() 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:

bis zum Ende der Datei lesen

Waqar Aslam avatar Waqar Aslam avatar

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

Verwandter Artikel - C File