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 implémenté 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 tampon
pointé par
s jusqu'à atteindre un retour chariot, ou
EOF, qu'il remplace par un octet nul (« \0 »). Il
n'y a pas de vérification de débordement de tampon (voir la section
des
BOGUES plus bas).
fgets() lit au plus
size - 1 caractères depuis
stream
et les place dans le tampon 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 tampon. Un octet nul
(« \0 ») final 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 garanti 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 des versions de ces fonctions ignorant les verrouillages, voir
unlocked_stdio(3).
VALEUR RENVOYÉE¶
fgetc(),
getc() et
getchar() renvoient 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 réussit, ou
EOF en cas
d'erreur.
C89, C99, POSIX.1-2001.
LSB déconseille l'utilisation de
gets(). POSIX.1-2008 marque
gets() comme étant obsolète. ISO C11 retire la specification
de
gets() du langage C et, depuis la version 2.16, les fichiers
d'en-tête glibc n'exposent pas la déclaration de fonction si la
macro de test de fonctionnalités
_ISOC11_SOURCE est définie.
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 tampon, 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()
À 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(2) 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),
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)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».