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 .
|