stdio - Standardein-/-ausgabe-Bibliotheksfunktionen
Standard-C-Bibliothek (
libc,
-lc)
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
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.
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 |
fopen(3) |
Funktionen zum Öffnen eines Datenstroms |
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 |
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 |
Die Bibliothek
stdio ist zu C99 konform.
close(2),
open(2),
read(2),
write(2),
stdout(3),
unlocked_stdio(3)
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
<
[email protected]>, Chris Leick <
[email protected]> und Mario
Blättermann <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 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