Das Speichern von Daten in einer Datei ist eine der Hauptaufgaben, mit denen Entwickler bei der Arbeit mit der Programmiersprache C konfrontiert sind. Die Fähigkeit, eine Bytefolge und Datenstrukturen zu speichern, ist bei der Entwicklung von Anwendungen, die mit Dateien oder Netzwerkprotokollen arbeiten, sehr wichtig. In diesem Artikel betrachten wir mehrere Möglichkeiten, Bytes mithilfe der Programmiersprache C in einer Datei zu speichern.
Eine einfache und effektive Möglichkeit, Bytes in einer Datei zu speichern, besteht darin, die Funktion fwrite() zu verwenden. Mit dieser Funktion können Sie beliebige Daten in eine Datei schreiben. Um diese Funktion verwenden zu können, müssen Sie einen Zeiger auf die zu schreibenden Daten, die Größe der einzelnen Datenelemente, die Anzahl der Datenelemente und den Zeiger auf die Datei angeben. Sie können beispielsweise den folgenden Code verwenden, um ein Bytearray in einer Datei zu speichern:
#include
int main()
FILE *file;
int size = sizeof(bytes) / sizeof(bytes[0]);
file = fopen("file.bin", "wb");
if (file != NULL)
fwrite(bytes, sizeof(char), size, file);
fclose(file);
Mit der Funktion fwrite() haben wir also ein Byte-Array in die Binärdatei file geschrieben.bin. Beachten Sie, dass wir beim Öffnen der Datei den Modus "wb" angegeben haben, was bedeutet, dass die Datei im Byte-Schreibmodus geöffnet wird. Wenn die Datei nicht existiert, wird sie erstellt, und wenn sie bereits existiert, wird ihr Inhalt überschrieben.
Grundbegriff
Beim Speichern von Bytes in einer Datei mit der Programmiersprache C ist es wichtig, einige grundlegende Konzepte zu verstehen:
- Ein Byte ist die grundlegende Maßeinheit für die Menge an Informationen, die 8 Bits enthalten kann.
- Eine Datei ist ein Satz von Bytes, die auf einem Speichermedium wie einer Festplatte oder einem Flashlaufwerk gespeichert sind.
- Ein Stream ist eine Folge von Bytes, die zwischen einem Programm und einem Speichergerät übertragen werden.
- Ein Puffer ist ein Speicherbereich, der zum temporären Speichern von Daten verwendet wird, bevor sie auf die Festplatte geschrieben werden.
- Das Öffnen einer Datei ist ein Prozess, bei dem eine Verbindung zwischen einem Programm und einer Datei hergestellt wird, mit der Daten gelesen oder geschrieben werden können.
- Schreiben von Daten - Der Prozess zum Schreiben von Bytes in eine Datei.
- Das Schließen einer Datei ist ein Prozess, bei dem die Kommunikation zwischen einem Programm und einer Datei beendet wird, nach dem die Datei nicht geändert werden kann.
Wenn Sie diese grundlegenden Konzepte verstehen, können Sie das Schreiben und Speichern von Bytes mithilfe der Programmiersprache C besser verwalten.
Öffnen einer Datei zum Schreiben
Wenn Sie die Bytes mithilfe der Programmiersprache C in einer Datei speichern, müssen Sie die Datei zuerst zum Schreiben öffnen. Dazu wird die Funktion fopen verwendet, die zwei Argumente verwendet: den Dateinamen und den Öffnungsmodus.
Der Modus zum Öffnen einer Datei kann mit verschiedenen Flags festgelegt werden, die den Zugriff und die Arbeitsweise der Datei definieren. Einige der am häufigsten verwendeten Flags sind:
| Flagge | Die Beschreibung |
|---|---|
| r | Datei zum Lesen öffnen |
| w | Datei zum Schreiben öffnen, wobei der Inhalt der Datei gelöscht wird. Wenn die Datei nicht existiert, wird sie erstellt. |
| a | Öffnen Sie die Datei zum Schreiben am Ende. Wenn die Datei nicht existiert, wird sie erstellt. |
Um eine Datei zum Schreiben zu öffnen, übergeben Sie das Flag w oder a als zweites Argument an die fopen-Funktion. Das Flag w wird verwendet, wenn Sie den Inhalt einer Datei überschreiben möchten, und das Flag a wird verwendet, wenn Sie Daten am Ende der Datei hinzufügen möchten.
Sie können Fehler beim Öffnen einer Datei behandeln, indem Sie den Rückgabewert der fopen-Funktion überprüfen. Wenn die Funktion NULL zurückgibt, ist beim Öffnen der Datei ein Fehler aufgetreten. In diesem Fall können Sie eine entsprechende Fehlermeldung anzeigen:
FILE *file = fopen("example.txt", "w");if (file == NULL)
Nachdem die Datei erfolgreich geöffnet wurde, können Sie Schreibvorgänge mit verschiedenen Funktionen der Programmiersprache C, wie fwrite oder fprintf, in die Datei schreiben. Nachdem das Schreiben in die Datei abgeschlossen ist, müssen Sie die Datei mit der Funktion fclose schließen :
fwrite(&data, sizeof(data), 1, file);fclose(file);
Der obige Code öffnet die Datei "example".txt" schreibt zum Schreiben, schreibt die Daten in die Variable data und schließt die Datei.
Schreiben von Bytes in eine Datei
Um die Bytes mithilfe der Programmiersprache C in einer Datei zu speichern, müssen Sie die folgenden Schritte ausführen:
- Öffnen einer Datei im Aufnahmemodus mit der Funktion fopen.
- Geben Sie ein Array von Bytes an, die in die Datei geschrieben werden sollen. Zum Beispiel, wenn Sie ein Array haben bytes Groess n enthält die zu schreibenden Bytes:
unsigned char bytes[n] = ;FILE *file = fopen("example.bin", "wb");if (file != NULL) else/ обработка ошибки при открытии файла>
Funktion fwrite schreibt Daten aus dem angegebenen Array in die angegebene Datei. Es akzeptiert die folgenden Argumente: ein Zeiger auf ein Datenarray, die Größe jedes Elements in Bytes, die Anzahl der zu schreibenden Elemente und ein Zeiger auf eine Datei. Die Funktion gibt die Anzahl der erfolgreich geschriebenen Elemente zurück.
In diesem Beispiel ist die Datei "example.bin" wird im Schreib- und Binärzugriffsmodus mit der Option "wb" geöffnet. Wenn die Datei erfolgreich geöffnet wurde, wird die Funktion fwrite schreibt ein Array bytes in die Datei. Nach Abschluss des Schreibvorgangs wird die Datei mit der Funktion geschlossen fclose.
Es ist wichtig zu beachten, dass beim Öffnen einer Datei im Schreibmodus eine vorhandene Datei mit demselben Namen überschrieben wird. Wenn Sie einer vorhandenen Datei Daten hinzufügen möchten, verwenden Sie den Modus "ab" (Datei zum Schreiben am Ende öffnen) oder "a" (Datei zum Schreiben am Ende öffnen, Datei erstellen, falls keine vorhanden ist).
Überprüfung auf Erfolg der Aufzeichnung
Nachdem Sie die Bytes in eine Datei geschrieben haben, ist es wichtig zu überprüfen, ob der Vorgang erfolgreich war. Um eine Überprüfung durchzuführen, müssen Sie die Funktion ferror verwenden. Mit dieser Funktion können Sie feststellen, ob beim Schreiben einer Datei Fehler aufgetreten sind.
Um die Funktion ferror zu verwenden, müssen Sie den Dateizeiger übergeben, der beim Öffnen der Datei verwendet wurde. Die Funktion gibt einen Wert ungleich Null zurück, wenn ein Fehler auftritt, andernfalls 0.
Beispiel für die Überprüfung, ob Bytes erfolgreich in eine Datei geschrieben wurden:
#include int main() else fclose(file);> else return 0;>
Datei schließen
Nachdem die Bytes erfolgreich in einer Datei gespeichert wurden, ist es wichtig, den Dateideskriptor ordnungsgemäß zu schließen, um Systemressourcen freizugeben. Das Schließen der Datei stellt außerdem sicher, dass alle Änderungen, die im Puffer vorgenommen wurden und nicht auf die Festplatte geschrieben wurden, vor dem Schließen geschrieben werden.
Die Funktion fclose() wird verwendet, um die Datei in der Programmiersprache C zu schließen. Diese Funktion akzeptiert einen Dateideskriptor als Argument und gibt 0 zurück, wenn die Datei erfolgreich geschlossen wird, oder EOF, wenn ein Fehler auftritt.
Beispiel zum Schließen einer Datei:
#include int main() // Запись байтов в файлint result = fclose(file);if (result != 0) return 0;>
Beachten Sie, dass der Versuch, eine Datei zu verwenden, nach dem Schließen der Datei zu einem undefinierten Programmverhalten führen kann. Daher wird es immer empfohlen, die Dateien nach der Verwendung zu schließen.
Beispielprogramm
Im Folgenden finden Sie ein Beispielprogramm in der Programmiersprache C, das Bytes in einer Datei speichert:
#include int main() ; // Пример массива байтовfile = fopen("output.bin", "wb"); // Открываем файл для записи в бинарном режимеif (file == NULL) // Записываем байты в файлfwrite(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), file);fclose(file); // Закрываем файлreturn 0;>