GETS(3)

BEZEICHNUNG
fgetc, fgets, getc, getchar, ungetc - Eingabe von Zeichen und Strings

Diese Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie die englischsprachige Handbuchseite zu Rate, indem Sie

    man -LC 3 gets

eingeben.

Ü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 von stream und gibt es als ein unsigned char gecastet in einem int zurück, oder EOF bei Dateiende oder Fehler.

getc() ist äquivalent zu fgetc(), außer dass es als ein Makro implementiert sein darf, der 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 '\0' ersetzt werden. Es wird keine Prüfung auf Pufferüberlauf durchgeführt (siehe BUGS unten).

fgets() liest höchstens size minus ein Zeichen von stream und speichert sie in dem Puffer, auf den s zeigt. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Ein '\0' wird nach dem letzten Zeichen im Puffer gespeichert.

ungetc() schiebt c zurück zu stream, gecasted in einem unsigned char, wenn es für folgende Leseoperationen möglich 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 Bibliothek stdio gemischt werden.

RÜCKGABEWERTE
fgetc(), getc() und getchar() geben das gelesene Zeichen als ein unsigned char gecastet in einem int zurück, oder EOF bei Dateiende oder Fehler.

gets() und fgets() geben s zurück bei Erfolg, und NULL im Fehlerfall oder wenn Dateiende auftritt ohne dass Zeichen gelesen wurden.

ungetc() gibt c zurück bei Erfolg, oder EOF im Fehlerfall.

KONFORM ZU
ANSI - C, POSIX.1

BUGS
Da es unmöglich ist, zu sagen, wie viele Zeichen gets() lesen wird, ohne die Daten vorher zu kennen, und da gets() fortfährt und Daten über das Ende des Puffers hinaus speichert, ist es sehr gefährlich, diese Funktion zu benutzen. Sie wurde benutzt um in Rechner einzubrechen. Benutze fgets() stattdessen.

Es ist nicht ratsam, Aufrufe von Funktionen der Bibliothek stdio mit low-level-Aufrufen von read() für den Dateideskriptor zu mischen, der mit demselben Eingabestream verbunden ist; die Ergebnisse sind undefiniert und sehr wahrscheinlich nicht erwünscht.

SIEHE AUCH
read(2), write(2), fopen(3), fread(3), scanf(3), puts(3), fseek(3), ferror(3).