Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

fputc - Byte in Datenstrom schreiben

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

int fputc(int c, FILE *stream);

Beschreibung

fputc() wandelt das durch c angegebene Byte in unsigned char um und schreibt es in den Ausgabestrom, auf den stream zeigt. Die Ausgabe erfolgt an der Position, die durch den zugehörigen Lese-/Schreibzeiger für die Datei angegeben wird, sofern er definiert ist. Der Lese-/Schreibzeiger wird anschließend entsprechend erhöht. Wenn die Datei Positionierungsanforderungen nicht unterstützen kann oder der Datenstrom zum Anfügen geöffnet wurde, wird das Zeichen an den Ausgabestrom angefügt.

Die Strukturkomponenten st_ctime und st_mtime der Datei werden zwischen der erfolgreichen Ausführung von fputc() und der nächsten erfolgreichen Beendigung eines Aufrufs von fflush() oder fclose() für denselben Datenstrom oder einem Aufruf von exit() oder abort() für die Änderung markiert (siehe sys/stat.h).

Returnwert

geschriebener Wert



bei Erfolg.

 

EOF

bei Fehler, z.B. wenn stream nicht zum Schreiben geöffnet ist oder die Ausgabedatei nicht mehr vergrößert werden kann. Das Fehlerkennzeichen wird gesetzt. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

fputc() schlägt fehl, wenn gilt:

 

EAGAIN

Für den Dateideskriptor, der stream zu Grunde liegt, ist das O_NONBLOCK-Flag gesetzt, und der Prozess wird beim Schreiben verzögert.

 

EBADF

Der Dateideskriptor, der sich auf stream bezieht, ist kein für das Schreiben gültiger Dateideskriptor.

 

EFBIG

Es wurde versucht, in eine Datei zu schreiben, wobei die maximale Dateigröße oder die Grenze für die Prozessdateigröße überschritten wurde (siehe  ulimit()).

 

EINTR

Das Schreiben wurde durch den Empfang eines Signals unterbrochen, und es wurden keine Daten übertragen.

 

EIO

Der Prozess ist Mitglied einer Hintergrund-Prozessgruppe und versucht, auf sein steuerndes Terminal zu schreiben. TOSTOP ist gesetzt. Das Signal SIGTTOU wird vom Prozess weder blockiert noch ignoriert, und die Prozessgruppe des Prozesses ist verwaist.

 

ENOSPC

Es ist kein freier Platz auf dem Datenträger mehr vorhanden.


EPIPE

Es wurde versucht, in eine Pipe oder FIFO zu schreiben, die für keinen Prozess zum Lesen geöffnet war. Außerdem wird das Signal SIGPIPE an den Prozess gesendet.

Werden Threads verwendet, so wirkt sich die Funktion auf den Prozess oder auf einen Thread wie folgt aus: Beim EPIPE-Fehler wird das Signal SIGPIPE nicht an den Prozess, sondern an den aufrufenden Thread gesendet.

Hinweise

Die Zeichen werden nicht sofort in die externe Datei geschrieben, sondern in einem C-internen Puffer zwischengespeichert (siehe Abschnitt "Pufferung von Datenströmen“).

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 "Zwischenraumzeichen“).

fputc() läuft langsamer als putc(), beansprucht jedoch weniger Speicherplatz pro Aufruf.

Ob fputc() für eine BS2000- oder eine POSIX-Datei ausgeführt wird, hängt von der Programmumgebung ab.

Siehe auch

ferror(), fopen(), putc(), puts(), setbuf(), stdio.h, sys/stat.h.