Write()-Funktion in C-Sprache

Write Funktion In C Sprache



Die Dateiverwaltung beim Programmieren ist eine Aufgabe, die der Programmierer fließend beherrschen muss. Die Kenntnis der verschiedenen Öffnungs-, Lese- und Schreibfunktionen ist unerlässlich, da wir sie immer benötigen, um die in Dateien gespeicherten Informationen zu speichern oder zu entsorgen.

In diesem Linux-Tipp-Artikel erfahren Sie, wie Sie die Funktion write() verwenden, um die Dateien zu schreiben.







Wir erklären alles über diese ella, ihre Syntax, die Aufrufmethode, die Eingabe- und Ausgabeargumente, die Art der Daten, die sie jeweils akzeptiert, und wie sie richtig deklariert werden.



Dann wenden wir das Gelernte an, indem wir die Verwendung dieser Funktion in praktische Beispiele umsetzen, die wir für Sie mit Codeschnipseln und Bildern vorbereitet haben, die die Verwendung von write() in der Sprache C zeigen.



Damit Sie ein umfassendes Wissen über die Verwendung der Funktion write() haben, haben wir einen speziellen Abschnitt hinzugefügt, der die einzelnen Fehler beschreibt, die bei der Verwendung dieser Funktion auftreten können, sowie deren Erkennung und Identifizierung notwendigen Techniken für eine schnelle Lösung im Falle ihres Auftretens.





Syntax der Write()-Funktion in C-Sprache

int schreiben ( int fd , Leere * buf , Größe_t N ) ;

Beschreibung der Write()-Funktion in C-Sprache

Die Funktion write() schreibt in eine geöffnete Datei. Diese Funktion schreibt den Inhalt des Puffers, auf den „buf“ zeigt, in die Datei, die durch ihren Deskriptor im Eingabeargument „fd“ angegeben ist. Die Größe des Blocks, der in die Datei geschrieben werden soll, muss im Eingabeargument „n“ angegeben werden.

Um mit der Funktion write() schreiben zu können, muss die Datei mit der Funktion open() geöffnet und in den Attributen O_RDONLY oder O_RDWR angegeben werden. Andernfalls hat diese Funktion keine Wirkung.



Wenn der Aufruf erfolgreich ist, wird die Anzahl der eingegebenen Zeichen zurückgegeben. Wenn beim Schreiben ein Fehler auftritt, wird ein Ergebnis zurückgegeben, das gleich -1 ist. Der Identifikationscode, der den Fehler anzeigt, kann aus der globalen Variablen errno abgerufen werden, die im Header „errno.h“ definiert ist.

Später finden Sie einen Abschnitt, in dem wir erklären, wie Sie die häufigsten Fehler dieser Funktion erkennen und identifizieren können.

Die Funktion write() ist im Header „unistd.h“ definiert. Die Flags, die die Attribute und den Modus zum Öffnen der Datei definieren, sind in „fcntl.h“ definiert. Um die Funktionen open() und write() verwenden zu können, müssen Sie diese Header wie folgt in Ihren Code einfügen:

#include

#include

So schreiben Sie mit der Funktion Write() in der Sprache C in eine Datei

In diesem Beispiel schreiben wir eine leere Textdatei mit dem Namen „example.txt“, die wir zuvor im Verzeichnis „Documents“ erstellt haben.

Der erste Schritt besteht darin, die erforderlichen Header einzufügen. Öffnen Sie die Datei innerhalb der main()-Funktion mit der open()-Funktion. Dazu müssen wir die Ganzzahl „fd“ deklarieren, die als Dateideskriptor dient, und das Puffer-Array „buf“ mit 1024 Zeichen, das den Text enthält, den wir in die Datei schreiben möchten. In diesem Puffer speichern wir den ersten Absatz der GCC-Manpage, um ihn in die Datei „example.txt“ zu schreiben.

Nachdem wir die Datei mit der Funktion open() im Lese-/Schreibmodus geöffnet haben, schreiben wir in die Datei, indem wir die Funktion write() aufrufen und den Dateideskriptor „fd“ als erstes Eingabeargument übergeben, den Zeiger „buf“ als zweites Argument und die Größe des Strings, der im Array enthalten ist, als drittes Argument, das wir mit der Funktion strlen() erhalten. Hier ist der Code für dieses Beispiel:

#include

#include

#include

#include

#include

#include

#include

Leere hauptsächlich ( )

{

int fd ;

verkohlen Puffer [ 1024 ] = 'Wenn Sie GCC aufrufen, führt es normalerweise eine Vorverarbeitung, Kompilierung, Assemblierung und Verknüpfung durch. Die Gesamtoptionen ermöglichen es Ihnen, diesen Prozess in einer Zwischenphase zu stoppen. Beispielsweise sagt die Option -c, dass der Linker nicht ausgeführt werden soll. Dann besteht die Ausgabe aus Objektdateien, die vom Assembler ausgegeben werden.' ;

fd = offen ( 'Dokumente/Beispiel.txt' , O_RDWR ) ;

schreiben ( fd , & Puffer , Strlen ( Puffer ) ) ;

schließen ( fd ) ;

}

In der folgenden Abbildung sehen wir die Kompilierung und Ausführung dieses Codes zusammen mit der geöffneten Datei, die von der Funktion write() geschrieben wird:

So fügen Sie einen Text am Ende einer Datei mit der Funktion Write() in der Sprache C hinzu

Wenn eine Datei durch Angabe der Flags O_WRONLY oder O_RDWR geöffnet wird, springt der Cursor an die erste Position und beginnt von dort aus zu schreiben.

Um am Ende einer Datei einen Text hinzuzufügen, muss dieser beim Öffnen der Datei durch eine logische ODER-Operation zwischen den Flags O_WRONLY oder O_RDWR und dem Flag O_ APPEND im Input-Flags-Argument der Funktion open() angegeben werden. Auf diese Weise wird der Cursor an das Ende der Datei gesetzt und das Schreiben beginnt von dort aus. Außerdem können die Attribute und der Schreibmodus geändert werden, nachdem die Datei mit der Funktion fcntl() geöffnet wurde.

In der folgenden Abbildung sehen Sie einen Code, der einen Text am Ende der Datei hinzufügt, die wir im vorherigen Beispiel geschrieben haben:

#include

#include

#include

#include

#include

#include

#include

Leere hauptsächlich ( )

{

int fd ;

verkohlen Puffer [ 1024 ] = 'Dieser Text wurde hinzugefügt. Dieser Text wurde hinzugefügt.' ;

fd = offen ( 'Dokumente/Beispiel.txt' , O_RDWR | O_APPEND ) ;

schreiben ( fd , & Puffer , Strlen ( Puffer ) ) ;

schließen ( fd ) ;

}

Das folgende Bild zeigt den hinzugefügten Text. Wie Sie sehen können, beginnt die Funktion write() bei dieser Öffnungsmethode mit dem Schreiben an der Position des letzten Zeichens, das in die Datei geschrieben wird:

So erkennen und identifizieren Sie die Fehler, die bei der Verwendung der Write()-Funktion in der C-Sprache auftreten können

Die Verwendung von write() kann verschiedene Fehler erzeugen. In diesem Fall gibt diese Funktion ein Ergebnis zurück, das gleich -1 ist.

Der einfachste Weg, um festzustellen, ob ein Fehler aufgetreten ist, ist die Verwendung einer „if“-Bedingung, wobei die Bedingung der Rückgabewert von -1 ist. Lassen Sie uns nun sehen, wie Sie diese Methode verwenden können, um festzustellen, ob ein Fehler aufgetreten ist:

int N ;

N = schreiben ( fd , & Puffer , Strlen ( Puffer ) ) ;

Wenn ( N == - 1 ) {

Druckf ( 'Beim Versuch, die Datei zu schreiben, ist ein Fehler aufgetreten.' ) ;

}

Wenn die Funktion write() mit einem Fehler zurückkehrt, wechselt sie zur „if“-Anweisung und gibt die Meldung „ Beim Versuch, die Datei zu schreiben, ist ein Fehler aufgetreten “.

Wenn ein Fehler auftritt, wird automatisch ein numerischer Code in der globalen Variablen errno gespeichert, die im Header „errno.h“ definiert ist. Dieser Code kann verwendet werden, um den aufgetretenen Fehler zu identifizieren.

Das Folgende ist ein Auszug mit den Fehlern, die die Funktion write() erzeugen kann und die im Header „errno.h“ definiert sind, zusammen mit einer kurzen Beschreibung jedes Fehlers und dem zugehörigen Integer-Wert:

Definition Wert in Fehlernr Fehler
WIEDER elf Versuchen Sie es erneut.
EBADF 9 Falsche Dateinummer.
EDESTADDRREQ 89 Zieladresse erforderlich.
EDQUOT 122 Kontingent überschritten.
FEHLER 14 Falsche Adresse.
EFBIG 27 Datei zu groß.
EINTR 4 Systemaufruf unterbrochen.
EINZELWAHL 22 Ungültiges Argument.
EIO 5 E/A-Fehler.
ENOSPC 28 Kein Speicherplatz auf Gerät.
Oberer, höher 1 Betrieb nicht erlaubt.

Der einfachste Weg, einen Fehler zu identifizieren, besteht darin, einen Schalter zu öffnen, bei dem die errno-Variable die Sprungbedingung und jeder Fall eine Fehlerdefinition ist.

Sehen wir uns als Nächstes ein Beispiel an, in dem wir versuchen, einen Deskriptor mit einem negativen Vorzeichen einzugeben, was zu einem Fehler führt. Um einen Fehler zu identifizieren, verwenden wir die „if“-Bedingung, die wir im vorherigen Snippet gesehen haben. Um es zu identifizieren, öffnen wir einen Schalter mit den drei häufigsten Fehlern, die diese Funktion erzeugen kann.

#include

#include

#include

#include

#include

#include

#include

Leere hauptsächlich ( )

{

int fd ;

int N ;

verkohlen Puffer [ 1024 ] = 'Hallo Welt' ;

fd = offen ( 'Dokumente/Beispiel.txt' , O_RDWR ) ;

N = schreiben ( - 2 , & Puffer , Strlen ( Puffer ) ) ;

Wenn ( N == - 1 ) {

schalten ( Fehlernr ) {

Fall EBADF : {

Druckf ( 'Ungültige Dateinummer. Fehler: %i \N ' , Fehlernr ) ;

brechen ; }

Fall EINZELWAHL : {

Druckf ( 'Ungültiges Argument. Fehler: %i \N ' , Fehlernr ) ;

brechen ; }

Fall EIO : {

Druckf ( 'E/A-Fehler. Fehler: %i \N ' , Fehlernr ) ;

brechen ; }

}

}

}

Wie wir in der folgenden Abbildung sehen können, gibt die Funktion write() einen Fehler zurück, wenn ein ungültiger Deskriptor als Eingabeargument übergeben wird. Der Wert, der aus der errno-Variablen abgerufen wird, wird als Sprungbedingung verwendet, die es uns ermöglicht, den Fehler zu identifizieren, wenn wir in den EBADF-Fall eintreten.

Abschluss

In diesem Linux-Tipp-Artikel haben wir Ihnen gezeigt, wie Sie die Funktion write() verwenden, um in die Dateien zu schreiben. Wir haben Ihnen die Syntax und die theoretische Beschreibung dieser Funktion gezeigt. Wir haben auch die Methoden zur Fehlererkennung und -identifizierung erläutert, damit Sie über die erforderlichen Tools und Techniken verfügen, um diese Probleme schnell zu lösen.

Damit Sie sehen können, wie write() funktioniert, haben wir die Verwendung dieser Funktion in praktischen Beispielen mit Codes und Bildern implementiert, die die Verwendung dieser und der anderen Dateiverarbeitungsfunktionen zeigen.

Außerdem haben wir Ihnen gezeigt, wie Sie den Datei-Öffnungsmodus auswählen, um einen Text am Anfang oder am Ende der Datei einzufügen, und welche Funktionen Ihnen zur Verfügung stehen, um diese Attribute zu ändern.