Dateihandhabung in C: Ein Leitfaden für Anfänger
Programme benötigen normalerweise eine Datenstruktur, um die Daten zu speichern, die sie während der Ausführung möglicherweise benötigen. Normalerweise werden diese Daten in Variablen oder Arrays gespeichert. Das Problem dabei ist, dass es verloren geht, sobald das Programm die Ausführung beendet. Dies liegt daran, dass es sich um temporäre Speicherorte handelt.
Wenn Ihre Daten auch nach dem Ausführen eines Programms zugänglich sein sollen, müssen Sie sie in einer Datei speichern. Dateien können entweder Text- oder Binärdateien sein.
Dieser Artikel konzentriert sich darauf, wie Sie Textdateien in C verwalten können. Folgendes müssen Sie wissen.
Öffnen einer Datei
Zunächst ist es wichtig zu wissen, dass Sie beim Arbeiten mit Dateien immer einen Zeiger vom Typ FILE deklarieren müssen. Dieser Zeiger ist notwendig, um die Kommunikation zwischen der Datei und dem Programm zu ermöglichen.
FILE *filePtr;
Um eine Datei schreiben, lesen oder aktualisieren zu können, müssen Sie sie zuerst öffnen. C stellt dafür die Standardbibliotheksfunktion fopen() bereit .
Diese Funktion übernimmt zwei String-Argumente: den Dateinamen und den Modus. Wenn sich die Datei, die Sie öffnen, nicht in dem Programmverzeichnis befindet, in dem Sie sich gerade befinden, können Sie den Dateipfad angeben, anstatt nur den Dateinamen zu verwenden.
Sehen Sie sich die folgende Syntax zur Verwendung von fopen() an :
filePtr = fopen("filename.txt", "mode");
Die Variable filePtr ist ein Zeiger vom Typ FILE . Das Argument Modus bezieht sich auf die Art und Weise die Datei geöffnet werden soll. Das heißt, welche Funktionen für die Datei erwartet werden.
Es gibt drei Modi, in denen Sie eine Datei in C öffnen können. Diese Modi sind r, w und a . Um eine Datei zu lesen, verwenden Sie r . Um in eine Datei zu schreiben, verwenden Sie w . Um Daten am Ende einer Datei anzuhängen, verwenden Sie eine .
Wenn Sie beispielsweise den Inhalt einer Datei namens programming.txt lesen möchten, verwenden Sie die folgende Anweisung:
filePtr = fopen("programming.txt" , "r");
Außer r, w und a gibt es noch weitere erweiterte Modi. Nachfolgend finden Sie eine Diskussion dieser Modi für Textdateien:
r+ und w+ : Beide Modi werden verwendet, um eine Datei zum Lesen und Schreiben zu öffnen. Der Unterschied besteht darin, dass r+ fopen() dazu bringt, NULL zurückzugeben, wenn diese Datei nicht existiert, während w+ stattdessen die Datei erstellt. Eine andere zu beachtende Sache ist, dass w+ eine Datei überschreibt, falls sie existiert.
a+ : Dieser Modus wird verwendet, um eine Datei zum Anhängen und Lesen zu öffnen. Wenn die Datei nicht existiert, wird sie erstellt.
Schreiben und Lesen
Sie können die Funktionen fprintf bzw. fscanf verwenden, um eine Datei zu schreiben und zu lesen. Diese beiden Funktionen sind vergleichbar in Funktionalität der printf und scanf – Funktionen in Basis – I / O.
#include <stdio.h>
int main(void){
// pointer declaration
FILE *filePtr;
filePtr = fopen("myfile.txt", "w");
//the message below will be written to myfile.txt
fprintf(filePtr, "%s", "Files are permanent memory locations.");
}
Der obige Code zeigt, wie Sie eine Datei namens myfile.txt erstellen und dann eine Nachricht darin speichern können. Um den Inhalt der neu erstellten Datei zu lesen, sehen Sie den folgenden Code.
#include <stdio.h>
#include <stdlib.h>
int main(void){
char message[196];
FILE *filePtr;
filePtr = fopen("myfile.txt", "r");
if (filePtr == NULL){
printf("Error opening the file");
//program exists if the pointer returns NULL
exit(1);
}
fscanf(filePtr,"%s", &message);
printf("The message is: %s", message);
fclose(filePtr);
}
Wenn Sie den obigen Code kompilieren und ausführen, ist Ihre Ausgabe Files. Sie werden feststellen, dass dies nicht die vollständige Nachricht ist, die Sie in myfile.txt gespeichert haben. Aber keine Sorge. Das ist kein Fehler im Code.
Wenn das Programm auf ein Leerzeichen stößt, hört es auf, den Dateiinhalt zu lesen. Wenn die Nachricht stattdessen als Dateien-sind-permanente-Speicher-Speicherorte geschrieben wäre, würden Sie die gesamte Ausgabe auf Ihrem Bildschirm erhalten.
In beiden angegebenen Codebeispielen sollten Sie die fclose()- Anweisung bemerkt haben. Sie müssen eine Datei (Text oder Binärdatei) immer schließen, nachdem Sie sie verwendet haben.
Ein Blick in die C++-Programmierung
Wenn Sie dieses Niveau der Dateiverarbeitung in C erreicht haben, sind Sie wahrscheinlich ein überdurchschnittlicher Benutzer der Sprache. Dies bedeutet auch, dass Sie nach effizienteren Programmiermöglichkeiten suchen sollten.
C++ ist die Antwort. Es ist die objektorientierte Version von C. Inzwischen sollten Sie die Ärmel hochkrempeln, um diese Trendsprache zu lernen.