GETS(3) Manuel du programmeur Linux GETS(3)
NOM
gets, fgetc, fgets, getc, getchar, ungetc - Saisie de car
actères et de chaînes.
SYNOPSIS
#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);
DESCRIPTION
fgetc() lit le caractère suivant depuis le flux stream et
renvoie ce caractère, lu sous forme unsigned char, puis
transformé en int, ou EOF en cas d'erreur ou de fin de
fichier.
getc() est équivalent à fgetc() sauf qu'il peut être
implementé sous forme de macro, qui évalue l'argument
stream plusieurs fois.
getchar() est équivalent à getc(stdin).
gets() lit une ligne depuis stdin et la place dans le
buffer pointé par s jusqu'à atteindre un retour-chariot,
ou EOF, qu'il remplace par '\0'. Il n'y a pas de vérifi
cation de débordement de buffer (voir plus bas la section
BUGS).
fgets() lit au plus size - 1 caractères depuis stream et
les place dans le buffer pointé par s. La lecture
s'arrête après EOF ou un retour-chariot. Si un retour-
chariot (newline) est lu, il est placé dans le buffer. Un
caractère nul '\0' est placé à la fin de la ligne.
ungetc() replace le caractère c dans le flux stream, en le
transformant en unsigned char, où il sera disponible pour
une lecture ultérieure. Les caractères replacés seront
renvoyés en ordre inverse. Le fonctionnement n'est garan
tit que pour le replacement d'un seul caractère.
Les fonctions décrites ci-dessus peuvent être utilisées
conjointement, ainsi qu'avec les autres fonctions de lec
ture de la bibliothèque stdio.
VALEUR RENVOYÉE
fgetc(), getc() et getchar() renvoie un caractère, lu
comme un unsigned char, et transformé en int, ou EOF à la
fin du fichier, ou en cas d'erreur.
gets() et fgets() renvoient le pointeur s si elles
GNU 11 Décembre 1997 1
GETS(3) Manuel du programmeur Linux GETS(3)
réussissent, et NULL en cas d'erreur, ou si la fin de
fichier est atteinte avant d'avoir pu lire au moins un
caractère.
ungetc() renvoie c s'il reussit, ou EOF en cas d'erreur.
CONFORMITÉ
ANSI - C, POSIX.1
BUGS
Comme il est impossible de savoir à l'avance combien de
caractères seront lus par gets(), et comme celui-ci écrira
tous les caractères lus, même s'ils débordent du buffer,
cette fonction est extrèmement dangereuse à utiliser. On a
déjà utilisé ce dysfonctionnement pour créer des trous de
sécurité. UTILISEZ TOUJOURS fgets() A LA PLACE DE gets().
Il est fortement déconseillé de mélanger les appels aux
fonctions de lecture de la bibliothèque stdio avec les
appels aux fonctions de lecture bas-niveau read() sur le
descripteur de fichier associé au flux. Les résultats sont
indéfinis, et très probablement indésirables.
VOIR AUSSI
read(2), write(2), fopen(3), fread(3), scanf(3), puts(3),
fseek(3), ferror(3)
TRADUCTION
Christophe Blaess, 1997.
GNU 11 Décembre 1997 2