BEZEICHNUNG¶
fgetc, fgets, getc, getchar, gets, ungetc - Eingabe von Zeichen und
Zeichenketten
ÜBERSICHT¶
#include <stdio.h>
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
char *gets(char *s);
int ungetc(int c, FILE *stream);
BESCHREIBUNG¶
fgetc() liest das nächste Zeichen aus
stream und gibt es als
ein
unsigned char zurück, das in ein
int umgewandelt wurde
oder
EOF bei Dateiende oder Fehler.
getc() ist äquivalent zu
fgetc(), außer dass es als ein
Makro implementiert sein darf, das
stream mehr als einmal auswertet.
getchar() ist äquivalent zu
getc(stdin).
gets() liest eine Zeile von
stdin in den Puffer, auf den
s
zeigt, bis entweder ein abschließender Zeilenvorschub oder
EOF
auftritt, welche durch ein Null-Byte ('\0') ersetzt werden. Es wird keine
Prüfung auf Pufferüberlauf durchgeführt (siehe
FEHLER
unten).
fgets() liest höchstens
size minus ein Zeichen von
stream und speichert sie in dem Puffer, auf den
s zeigt. Das
Lesen endet nach einem
EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub
gelesen wird, wird er in dem Puffer gespeichert. Nach dem letzten Zeichen im
Puffer wird ein abschließendes Null-Byte ('\0') gespeichert.
ungetc() schiebt
c zurück zu
stream, umgewandelt in
ein
unsigned char, wo es für folgende Leseoperationen
verfügbar ist. Zurückgeschobene Zeichen werden in umgekehrter
Reihenfolge zurückgegeben; nur ein Zurückschieben wird
unterstützt.
Aufrufe der hier beschriebenen Funktionen können für den selben
Eingabestream untereinander und mit anderen Eingabefunktionen der
stdio-Bibliothek gemischt werden.
Für nicht sperrende Gegenstücke siehe
unlocked_stdio(3).
RÜCKGABEWERT¶
fgetc(),
getc() und
getchar() geben das gelesene Zeichen
als ein
unsigned char zurück (umgewandelt in ein
int) oder
EOF bei Dateiende oder Fehler.
gets() und
fgets() geben bei Erfolg
s zurück und
NULL im Fehlerfall oder wenn das Dateiende auftritt, ohne dass Zeichen
gelesen wurden.
ungetc() gibt bei Erfolg
c zurück oder im Fehlerfall
EOF.
C89, C99, POSIX.1-2001.
LSB missbilligt
gets(), POSIX.1-2008 markiert
gets() als veraltet.
ISO C11 entfernt die Spezifikation von
gets() aus der Sprache C. Seit
Version 2.16 stellen die Header-Dateien der Glibc die Funktionsdeklaration
nicht mehr bereit, wenn das Feature-Test-Makro
_ISOC11_SOURCE definiert
ist.
FEHLER¶
Benutzen Sie
gets() niemals. Da ohne die vorherige Kenntnis der Daten
nicht gesagt werden kann, wie viele Zeichen
gets() lesen wird, und da
gets() fortfahren wird, Daten über das Ende des Puffers hinaus zu
speichern, ist die Nutzung dieser Funktion sehr gefährlich. Sie wurde
benutzt, um in Rechner einzubrechen. Benutzen Sie stattdessen
fgets().
Es ist nicht ratsam, Aufrufe von Funktionen der
stdio-Bibliothek mit
systemnahen Aufrufen von
read(2) für den Dateideskriptor zu
mischen, der mit demselben Eingabestream verbunden ist; die Ergebnisse sind
nicht definiert und sehr wahrscheinlich nicht das, was sie wollen.
SIEHE AUCH¶
read(2),
write(2),
ferror(3),
fgetwc(3),
fgetws(3),
fopen(3),
fread(3),
fseek(3),
getline(3),
getwchar(3),
puts(3),
scanf(3),
ungetwc(3),
unlocked_stdio(3),
feature_test_macros(7)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
<krd@gulu.net> und Martin Eberhard Schauer
<Martin.E.Schauer@gmx.de> 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 <debian-l10n-german@lists.debian.org>.