stdio(3)

BEZEICHNUNG
stdio - Standardein-/-ausgabe-Bibliotheksfunktionen

BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT
#include <stdio.h>

extern FILE  *stdin;
extern FILE  *stdout;
extern FILE  *stderr;

BESCHREIBUNG
Die Standard-E/A-Bibliothek stellt eine einfache und effiziente E/A-Schnittstelle für gepufferte Datenströme zur Verfügung. Ein- und Ausgabe werden als logische Datenströme dargestellt und physikalische E/A-Charakteristiken werden verborgen. Die Funktionen und Makros sind im Folgenden aufgelistet; weitere Informationen sind auf den verschiedenen Handbuchseiten verfügbar.

Ein Datenstrom wird mit einer externen Datei (die ein physikalisches Gerät sein kann) verbunden, indem eine Datei geöffnet wird, was das Erzeugen einer neuen Datei beinhaltet. Eine bestehende Datei zu erzeugen, verwirft ihren bisherigen Inhalt. Wenn die Datei Positionierungsänderungen unterstützt (wie eine Datei auf einer Festplatte, im Gegensatz zu einem Terminal), dann wird ein Dateipositionszeiger mit dem Datenstrom verbunden und auf den Anfang der Datei positioniert (nulltes Byte), außer wenn die Datei im Anhänge-Modus geöffnet wurde. Im Anhänge-Modus ist es nicht spezifiziert, ob der Positionsanzeiger auf den Anfang oder das Ende der Datei platziert wird. Der Positionszeiger wird durch nachfolgende Lese-, Schreib- und Positionierungszugriffe bewegt. Jede Eingabe wird so eingelesen, als ob die Funktion fgetc(3) für jedes Zeichen einzeln aufgerufen worden wäre. Die Ausgabe erfolgt, als würde jedes Zeichen einzeln durch die Funktion fputc(3) geschrieben.

Eine Datei wird von einem Datenstrom durch Schließen der Datei gelöst. Ausgabedatenströme werden geleert (noch nicht geschriebener Pufferinhalt wird auf den Rechner übertragen) bevor der Datenstrom von der Datei getrennt wird. Der Wert eines Zeigers auf ein FILE Objekt ist nicht mehr gültig, nachdem die Datei geschlossen wurde (Müll).

Eine Datei kann nachfolgend durch das selbe oder ein anderes Programm wieder geöffnet und ihr Inhalt zurückgelesen oder verändert werden (falls sie auf den Anfang zurückpositioniert werden kann). Wenn die Hauptfunktion zum ursprünglich Aufrufenden zurückkehrt oder die Funktion exit(3) aufgerufen wird, werden alle offenen Dateien vor Programmende geschlossen (nachdem alle Ausgabedatenströme herausgeschrieben wurden). Andere Methoden zur Beendigung von Programmen, wie abort(3), kümmern sich nicht um das korrekte Schließen von Dateien.

Bei Programmstart sind drei Textdatenströme vordefiniert und brauchen nicht explizit geöffnet zu werden: Standardeingabe (zum Lesen konventioneller Eingabe), Standardausgabe (zum Schreiben konventioneller Ausgabe) und Standardfehlerausgabe (zum Schreiben der Diagnoseausgabe). Diese Datenströme werden abgekürzt durch stdin,stdout und stderr. Der Datenstrom der Standardfehlerausgabe ist nicht vollständig gepuffert, wenn er geöffnet ist; die Datenströme der Standardein- und -ausgabe sind nur dann vollständig gepuffert, wenn die Datenströme nicht auf ein interaktives Gerät verweisen.

Ausgabedatenströme, die auf Terminalgeräte verweisen, sind standardmäßig zeilengepuffert. Noch ausstehende Ausgaben zu solchen Datenströmen werden automatisch geschrieben, wann immer aus einem Eingabedatenstrom gelesen wird, der sich auf ein Terminalgerät bezieht. Falls nach einer Ausgabe viel gerechnet wird, ist es notwendig, fflush(3) vor der Rechnung aufzurufen, damit die Ausgabe erscheint.

Die Bibliothek stdio ist Teil der Bibliothek libc und die Routinen werden von cc(1) nach Bedarf geladen. Die Abschnitte ÜBERSICHT der folgenden Handbuchseiten zeigen, welche Include-Dateien zu benutzen sind, wie die Deklaration für die Funktion aussieht und welche externen Variablen interessant sind.

Die folgenden Namen sind als Makros definiert. Sie dürfen nicht wiederbenutzt werden ohne ihre vorherigen Definitionen vorher mit #undef zu entfernen: BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, SEEK_END, SEEK_SET, SEEK_CUR, TMP_MAX, clearerr, feof, ferror, fileno, getc, getchar, putc, putchar, stderr, stdin, stdout. Von den Makrofunktionen feof, ferror, clearerr, fileno, getc, getchar, putc und putchar existieren Funktionsversionen. Diese werden benutzt, wenn die Makrodefinitionen explizit entfernt werden.

  Liste der Bibliotheksfunktionen
Funktion | Beschreibung
clearerr(3) | Status des Datenstroms prüfen und zurücksetzen
fclose(3) | Datenstrom schließen
fdopen(3) | Funktionen zum Öffnen eines Datenstroms
feof(3) | Status des Datenstroms prüfen und zurücksetzen
ferror(3) | Status des Datenstroms prüfen und zurücksetzen
fflush(3) | Datenstrom herausschreiben
fgetc(3) | nächstes Zeichen oder Wort aus dem Eingabedatenstrom einlesen
fgetpos(3) | einen Datenstrom neu positionieren
fgets(3) | eine Zeile aus dem Datenstrom einlesen
fileno(3) | den Ganzzahldeskriptor eines Argumentdatenstroms zurückgeben
fmemopen(3) | Speicher als Datenstrom öffnen
fopen(3) | Funktionen zum Öffnen eines Datenstroms
fopencookie(3) | einen angepassten Datenstrom öffnen
fprintf(3) | formatierte Ausgabeumwandlung
fpurge(3) | Datenstrom herausschreiben
fputc(3) | ein Zeichen oder Wort in einen Datenstrom ausgeben
fputs(3) | eine Zeile in einen Datenstrom ausgeben
fread(3) | binäre Datenstromein-/-ausgabe
freopen(3) | Funktionen zum Öffnen eines Datenstroms
fscanf(3) | formatbasierte Eingabeumwandlung
fseek(3) | einen Datenstrom neu positionieren
fsetpos(3) | einen Datenstrom neu positionieren
ftell(3) | einen Datenstrom neu positionieren
fwrite(3) | binäre Datenstromein-/-ausgabe
getc(3) | nächstes Zeichen oder Wort aus dem Eingabedatenstrom einlesen
getchar(3) | nächstes Zeichen oder Wort aus dem Eingabedatenstrom einlesen
gets(3) | eine Zeile aus dem Datenstrom einlesen
getw(3) | nächstes Zeichen oder Wort aus dem Eingabedatenstrom einlesen
mktemp(3) | einen (eindeutigen) temporären Dateinamen erzeugen
open_memstream(3) | einen dynamischen Speicher-Puffer-Datenstrom öffnen
open_wmemstream(3) | einen dynamischen Speicher-Puffer-Datenstrom öffnen
perror(3) | Systemfehlermeldungen
printf(3) | formatierte Ausgabeumwandlung
putc(3) | ein Zeichen oder Wort in einen Datenstrom ausgeben
putchar(3) | ein Zeichen oder Wort in einen Datenstrom ausgeben
puts(3) | eine Zeile in einen Datenstrom ausgeben
putw(3) | ein Zeichen oder Wort in einen Datenstrom ausgeben
remove(3) | einen Verzeichniseintrag löschen
rewind(3) | einen Datenstrom neu positionieren
scanf(3) | formatbasierte Eingabeumwandlung
setbuf(3) | Datenstrom-Puffereinstellungen
setbuffer(3) | Datenstrom-Puffereinstellungen
setlinebuf(3) | Datenstrom-Puffereinstellungen
setvbuf(3) | Datenstrom-Puffereinstellungen
sprintf(3) | formatierte Ausgabeumwandlung
sscanf(3) | formatbasierte Eingabeumwandlung
strerror(3) | Systemfehlermeldungen
sys_errlist(3) | Systemfehlermeldungen
sys_nerr(3) | Systemfehlermeldungen
tempnam(3) | Routinen für temporäre Dateien
tmpfile(3) | Routinen für temporäre Dateien
tmpnam(3) | Routinen für temporäre Dateien
ungetc(3) | Zeichen zurück in den Eingabedatenstrom geben
vfprintf(3) | formatierte Ausgabeumwandlung
vfscanf(3) | formatbasierte Eingabeumwandlung
vprintf(3) | formatierte Ausgabeumwandlung
vscanf(3) | formatbasierte Eingabeumwandlung
vsprintf(3) | formatierte Ausgabeumwandlung
vsscanf(3) | formatbasierte Eingabeumwandlung

STANDARDS
C11, POSIX.1-2008.

GESCHICHTE
C89, POSIX.1-2001.

SIEHE AUCH
close(2), open(2), read(2), write(2), stdout(3), unlocked_stdio(3)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Chris Leick <c.leick@vollbio.de>, Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.