Beschreibt, wie der C-Programmierer eine Textdatei oder eine Binärdatei erstellt, öffnet und schließt.
Eine Datei bedeutet eine Reihe von Bytes, unabhängig davon, ob es sich um eine Textdatei oder eine Binärdatei handelt. Die Sprache C bietet nicht nur Zugriff auf die Funktionen der obersten Ebene, sondern auch den zugrunde liegenden (Betriebssystem-)Aufruf zum Verarbeiten von Dateien auf dem Speichergerät . In diesem Kapitel werden die wichtigen Aufrufe im Dokumentenmanagement erläutert.
Datei öffnen
Dieser Aufruf verwendet normalerweise die Funktion fopen(), um eine neue Datei zu erstellen oder eine vorhandene Datei zu öffnen. Er initialisiert ein Objekt vom Typ FILE, das alle notwendigen Informationen zur Steuerung des Flusses enthält. Hier ist der Prototyp dieses Funktionsaufrufs:
FILE *fopen (const char * Dateiname, const char * Modus);
Hier ist Dateiname eine Zeichenfolge zum Benennen einer Datei. Der Wert des Zugriffsmodus kann einer der folgenden Werte sein:
Muster | Beschreibung |
r | Öffnen Sie eine vorhandene Textdatei, die das Lesen ermöglicht. |
w | Öffnen Sie eine Textdatei, die das Schreiben in die Datei ermöglicht. Wenn die Datei nicht existiert, wird eine neue Datei erstellt. Hier schreibt Ihr Programm den Inhalt vom Anfang der Datei an. Wenn die Datei vorhanden ist, wird sie auf die Länge Null gekürzt und neu geschrieben. |
a | Öffnen Sie eine Textdatei und schreiben Sie im Anhängemodus in die Datei. Wenn die Datei nicht existiert, wird eine neue Datei erstellt. Hier hängt Ihr Programm Inhalte an die Dateien an, die Sie bereits haben. |
r+ | Öffnen Sie eine Textdatei, die es Ihnen ermöglicht, die Datei zu lesen und zu schreiben. |
w+ | Öffnen Sie eine Textdatei, die es Ihnen ermöglicht, die Datei zu lesen und zu schreiben. Wenn die Datei bereits vorhanden ist, wird die Datei auf die Länge Null gekürzt. Wenn die Datei nicht vorhanden ist, wird eine neue Datei erstellt. |
a+ | Öffnen Sie eine Textdatei, die es Ihnen ermöglicht, die Datei zu lesen und zu schreiben. Wenn die Datei nicht existiert, wird eine neue Datei erstellt. Der Lesevorgang beginnt am Anfang der Datei und der Schreibvorgang erfolgt nur im Anhängemodus. |
Wenn eine Binärdatei verarbeitet wird, verwenden Sie den folgenden Zugriffsmodus, um den oben genannten zu ersetzen:
„rb“, „wb“, „ab“, „rb+“, „r+b“, „wb+“, „w+b“, „ab+“, „a+b“
geschlossene Datei
Um die Datei zu schließen, verwenden Sie bitte die Funktion fclose(). Der Prototyp der Funktion lautet wie folgt:
int fclose (DATEI *fp);
- Wenn die Datei erfolgreich geschlossen wurde, gibt die Funktion fclose() Null zurück, und wenn der Fehler auftritt, gibt sie EOF zurück. Diese Funktion entfernt tatsächlich die Daten aus dem Puffer, schließt die Datei und gibt den gesamten für diese Datei verwendeten Speicher frei. EOF ist eine Konstante, die in der Header-Datei stdio.h definiert ist
Die C-Standardbibliothek bietet verschiedene Funktionen zum Lesen und Schreiben von Dateien nach Zeichen oder als Zeichenfolge fester Länge.
Schreiben Sie in die Datei
Hier sind die einfachsten Funktionen zum Schreiben von Zeichen in den Stream:
int fputc ( int c , FILE *fp );
Die Funktion fputc() schreibt den Zeichenwert des Parameters c in den Ausgabestream, auf den der fp zeigt. Wenn die Schreibvorgänge erfolgreich sind, werden das geschriebene Zeichen und der EOF zurückgegeben, wenn ein Fehler auftritt. Mit der folgenden Funktion können Sie eine Zeichenfolge, die mit einer Null endet, in den Stream schreiben:
int fputs ( const char *s , FILE *fp );
Die Funktion fputs() schreibt den String s in den Ausgabestream, auf den der fp zeigt. Wenn die Schreibvorgänge erfolgreich sind, wird ein nicht negativer Wert zurückgegeben und der EOF, wenn ein Fehler auftritt. Sie können auch die Funktion int fprintf (FILE * fp, const char * format,...) verwenden, um einen String in die Datei zu schreiben. Versuchen Sie das folgende Beispiel:
Hinweis: Stellen Sie sicher, dass Sie über ein verfügbares tmp-Verzeichnis verfügen. Falls dieses nicht vorhanden ist, müssen Sie es zunächst auf Ihrem Computer erstellen.
/tmp ist normalerweise ein temporäres Verzeichnis auf dem Linux-System. Wenn Sie es auf dem Windows-System ausführen, müssen Sie es in ein vorhandenes Verzeichnis in der lokalen Umgebung ändern, z. B.: C:\tmp, D:\tmp usw.
lebendiges Beispiel
#enthalten
Wenn der obige Code kompiliert und ausgeführt wird, wird eine neue Datei test.txt im Verzeichnis /tmp erstellt. Und schreibt mit zwei verschiedenen Funktionen in zwei Zeilen. Lesen wir als nächstes diese Datei.
Lesen Sie die Datei
Die folgende Funktion ist die einfachste, um ein einzelnes Zeichen aus einer Datei zu lesen:
int fgetc (DATEI * fp);
Die Funktion fgetc() liest ein Zeichen aus der Eingabedatei, auf das der fp zeigt. Der Rückgabewert ist das gelesene Zeichen und der EOF, wenn ein Fehler auftritt. Mit der folgenden Funktion können Sie einen String aus einem Stream lesen:
char *fgets ( char *buf , int n , FILE *fp );
Die Funktion fgets() liest n-1 Zeichen aus dem von fp gesteuerten Eingabestream. Es kopiert die gelesene Zeichenfolge in den Pufferpuffer und hängt am Ende ein Nullzeichen an, um die Zeichenfolge zu beenden.
Wenn diese Funktion vor dem Lesen des letzten Zeichens auf ein unterbrochenes Zeilenzeichen „\ n“ oder den EOF am Ende der Datei stößt, werden nur die gelesenen Zeichen einschließlich der Zeilenumbrüche zurückgegeben. Sie können auch die Funktion int fscanf (FILE * fp, const char * format,...) verwenden, um die Zeichenfolge aus der Datei zu lesen. Der Lesevorgang stoppt jedoch, wenn das erste Leerzeichen und der erste Zeilenumbruch auftreten.
lebendiges Beispiel
#enthalten
Wenn der obige Code kompiliert und ausgeführt wird, liest er die im vorherigen Abschnitt erstellten Dateien und erzeugt die folgenden Ergebnisse:
1: Dies 2: testet fprintf...
3: Dies ist ein Test für Fputs ...
Erstens liest die Methode von fscanf() nur This .weil sie hinten auf ein Leerzeichen trifft. Zweitens rufen Sie die Funktion fgets() auf, um den verbleibenden Teil bis zum Ende der Zeile zu lesen. Rufen Sie abschließend fgets() auf, um die zweite Zeile vollständig zu lesen.
Binäre I/O-Funktion
Für die binäre Ein- und Ausgabe werden folgende zwei Funktionen verwendet:
size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );
Bei beiden Funktionen handelt es sich um Lese- und Schreibfunktionen für Speicherblöcke – normalerweise Arrays oder Strukturen.
Die oben genannten Informationen zum Lesen und Schreiben von C-Dateien gehören HDV Phoelectron Technology Ltd., einem Software-Technikunternehmen. Und das Unternehmen für netzwerkbezogene Geräte (z. B. AC).ONU/ KommunikationONU/ intelligentONU/ FaserONU, etc.) hat ein leistungsstarkes Software-Team zusammengestellt, das für jeden Kunden die exklusiven Anforderungen individuell anpasst und unsere Produkte intelligenter und fortschrittlicher macht.