GETS
Section: Manuel du programmeur Linux (3) Updated: 21 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
CONFORMITÉ
BOGUES
VOIR AUSSI
TRADUCTION
NOM
gets, fgetc, fgets, getc, getchar, ungetc - Saisie de caractè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 le renvoie sous forme d'un
unsigned char,
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érification de débordement de buffer (voir plus bas la section
BOGUE
plus bas).
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 garantit 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 lecture de la bibliothèque
stdio.
Pour les versions de ces fonctions ignorant les verrouillages, voir
unlocked_stdio(3).
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 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
BOGUES
N'utilisez jamais
gets().
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
TRADUCTION
Christophe Blaess, 1996-2003.
|