Definition | #include <stdio.h> size_t fwrite(const void *zg, size_t elgroesse, size_t anz, FILE *dz);
| |
Returnwert | Anzahl der tatsächlich geschriebenen Elemente | |
bei Erfolg. | ||
| 0 | bei Dateiende oder Fehler. |
Hinweise | Um sicherzugehen, dass elgroesse die richtige Anzahl Bytes für ein Datenelement angibt, sollten Sie die Funktion Bei der Ausgabe in Dateien mit Strom-E/A werden die Daten nicht sofort in die externe Datei geschrieben, sondern in einem C-internen Puffer zwischengespeichert (siehe Abschnitt „Pufferung“ (Grundbegriffe)). Bei der Ausgabe in Textdateien werden die Steuerzeichen für Zwischenraum (\n, \t, etc.) je nach Art der Textdatei in ihre entsprechende Wirkung umgesetzt (siehe Abschnitt „Zwischenraum“ (Grundbegriffe)). | |
Satz-E/A | fwrite schreibt einen Satz in die Datei. Bei sequenziellen Dateien (SAM, PAM) wird der Satz an die aktuelle Dateiposition geschrieben. Bei indexsequenziellen Dateien (ISAM) wird der Satz an die Position geschrieben, die dem Schlüsselwert im Satz entspricht. Anzahl der auszugebenden Zeichen: Im Folgenden sei n die Gesamtanzahl der auszugebenden Zeichen, d.h. n = Elementlänge * Elementanzahl Ist n größer als die maximale Satzlänge, wird nur ein Satz mit maximaler Satzlänge geschrieben. Die restlichen Daten gehen verloren. Ist n kleiner als die minimale Satzlänge, wird kein Satz geschrieben. Die minimale Satzlänge ist nur für ISAM-Dateien definiert und bedeutet, dass n mindestens den Bereich des Schlüssels im Satz umfassen muss. Ist n beim Neuschreiben eines Satzes in eine Datei mit fester Satzlänge kleiner als die Satzlänge, wird der Satz am Ende mit binären Nullen aufgefüllt. Beim Update eines bestehenden Satzes in einer sequenziellen Datei (SAM, PAM) muss n gleich der Länge des zu aktualisierenden Satzes sein. Im anderen Fall tritt ein Fehler auf. Als Satzlänge für PAM-Dateien gilt die Länge eines logischen Blocks. Beim Update eines bestehenden Satzes in einer indexsequenziellen Datei (ISAM) braucht n nicht gleich der Länge des zu aktualisierenden Satzes sein. Ein Satz kann also verkürzt oder verlängert werden. In ISAM-Dateien, für die Schlüsselverdoppelung zugelassen ist, ist kein direkter Update eines Satzes möglich. Beim Schreiben eines Satzes mit einem bereits existierenden Schlüssel wird stets ein neuer Satz geschrieben. Der alte Satz muss explizit gelöscht werden.
Bei Textdateien mit der Zugriffsart SAM und variabler Satzlänge, für die zusätzlich eine maximale Satzlänge angegeben ist, gilt: Wenn bei
| |
Beispiel | Folgendes Programm überträgt zwei Personeneinträge auf die Datei mit Dateizeiger p_list. #include <stdio.h> int main(void) { FILE *p_list; size_t result; static struct p { char name[20]; int a; } person[2] = { {"ANNE", 30}, {"HANS", 60}, }; p_list = fopen("link=link", "w"); result = fwrite(person, sizeof(struct p), 2, p_list); printf("%d Personeneintraege geschrieben\n", result); return 0; } | |
Siehe auch | fread, feof, ferror |