Linux

CentOS 4.8

ungetc(3)


GETS

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 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érification de débordement de buffer (voir plus bas la section BOGUES).

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

read(2), write(2), fopen(3), fread(3), scanf(3), puts(3), fseek(3), ferror(3), unlocked_stdio(3)

TRADUCTION

Christophe Blaess, 1997.


ungetc(3)