Inhalt einer Datei mit C umkehren

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir lernen, wie man den Inhalt einer Datei mit der Programmiersprache C umkehrt.
Wir lesen den Inhalt der Eingabedatei Zeichen für Zeichen und schreiben ihn in umgekehrter Reihenfolge in die Ausgabedatei zurück.

Hinweis: Sie müssen die Datei ~/project/main.c selbst erstellen, um das Programmieren zu üben und zu lernen, wie man sie mit gcc kompiliert und ausführt.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c/ControlFlowGroup -.-> c/for_loop("For Loop") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/FileHandlingGroup -.-> c/write_to_files("Write To Files") c/FileHandlingGroup -.-> c/create_files("Create Files") c/FileHandlingGroup -.-> c/read_files("Read Files") subgraph Lab Skills c/for_loop -.-> lab-123317{{"Inhalt einer Datei mit C umkehren"}} c/memory_address -.-> lab-123317{{"Inhalt einer Datei mit C umkehren"}} c/write_to_files -.-> lab-123317{{"Inhalt einer Datei mit C umkehren"}} c/create_files -.-> lab-123317{{"Inhalt einer Datei mit C umkehren"}} c/read_files -.-> lab-123317{{"Inhalt einer Datei mit C umkehren"}} end

Öffnen der Eingabe- und Ausgabedateien

Im ersten Schritt werden wir die Eingabe- und Ausgabedateien mit der Funktion fopen() öffnen. Wir werden zwei Dateizeiger (file pointers) für diese Dateien erstellen, einen für die Eingabe und einen für die Ausgabe.

FILE *input_file, *output_file;
input_file = fopen("input.txt", "r");
output_file = fopen("output.txt", "w");

Zählen der Anzahl der Zeichen in der Eingabedatei

In diesem Schritt werden wir die Anzahl der Zeichen in der Eingabedatei mit den Funktionen fseek() und ftell() zählen.
Wir setzen die Dateiposition auf das Ende der Datei mit fseek(input_file, 0, SEEK_END); und erhalten die aktuelle Dateiposition mit ftell(input_file);.
Dadurch erhalten wir die Gesamtzahl der Zeichen in der Eingabedatei.

fseek(input_file, 0, SEEK_END);
long total_characters = ftell(input_file);

Kopieren der Zeichen in umgekehrter Reihenfolge von der Eingabedatei in die Ausgabedatei

Jetzt, da wir die Gesamtzahl der Zeichen in der Eingabedatei kennen, werden wir die Zeichen in umgekehrter Reihenfolge in die Ausgabedatei kopieren.
Wir werden die Eingabedatei Zeichen für Zeichen durchlaufen und jedes Zeichen mit der Funktion fputc() in die Ausgabedatei schreiben.
Wir beginnen mit dem letzten Zeichen in der Eingabedatei und bewegen uns rückwärts mit fseek(input_file, -1L, SEEK_CUR);.

for (long i = total_characters-1; i >= 0; i--) {
  fseek(input_file, i, SEEK_SET);
  char c = fgetc(input_file);
  fputc(c, output_file);
}

Schließen der Eingabe- und Ausgabedateien

Im letzten Schritt werden wir die Eingabe- und Ausgabedateien mit der Funktion fclose() schließen.

fclose(input_file);
fclose(output_file);

Zusammenfassung

In diesem Lab (Praktikum) haben wir gelernt, wie man den Inhalt einer Datei mit der Programmiersprache C umkehrt. Wir haben die Eingabe- und Ausgabedateien geöffnet, die Anzahl der Zeichen in der Eingabedatei gezählt, die Zeichen in umgekehrter Reihenfolge in die Ausgabedatei kopiert und die Eingabe- und Ausgabedateien geschlossen.