Syntaxe :
#include <cstdio> int scanf(const char *format, ... );
La fonction scanf()
lit, depuis l'entrée standard (stdin
), des données selon
le format
passé en paramètre et stocke les données dans la liste des argument
qui suit. Son fonctionnement est semblable à celui de printf()
.
La chaîne de caractères format
est composée de caractères de contrôle ;
scanf()
ignore les espace, tabulation et autres espaces “blancs”. Ces caractères
de contrôles sont précédés par un %
et doivent être utilisés ainsi :
Caractère de contrôle | Type de donnée reçu |
---|---|
%c | un seul caractère |
%d | un nombre décimal |
%i | un entier |
%e, %f, %g | un nombre à virgule flottante |
%lf | un double |
%o | un nombre au format octal |
%s | une chaîne de caractères |
%x | un nombre au format hexadécimal |
%p | un pointeur |
%n | un entier égal au nombre de caractères lus jusque là |
%u | un entier non signé |
%[] | un ensemble de caractères |
%% | un caractère % |
scanf()
lit des données sur l'entrée standard en faisant correspondre
les caractère lus au format attendu. Lorsqu'un caractère de contrôle est lu,
la données correspondante est stockée dans la variable suivante. Les caractères
“blancs” (espaces, tabulations, etc.) sont ignorés. Les autres caractères sont
interprétés et les données correspondantes sont alors lues. La présence d'un nombre
entre le %
et le caractère de contrôle indique que seulement ce nombre de
caractères seront lus et convertis dans la variable. Si scanf()
rencontre
un ensemble de caractères, annoncés par la séquence de contrôle %[]
, alors
les caractères à l'intérieur des crochets seront lu et stockés dans la variable.
La valeur de retour de scanf()
est le nombre de variable correctement assignées,
ou bien EOF
en cas d'erreur.
Le bout de code suivant utilise scanf()
pour lire un entier, puis un nombre à virgule
flottante et un double que l'utilisateur aura indiqué au clavier.
Remarquez que les arguments de destinations passés à scanf()
sont passés par adresse
comme l'indique l'esperluette &
précédant chaque variable.
int i; float f; double d; printf( "Tapez un entier : " ); scanf( "%d", &i ); printf( "Taper un nombre flottant : " ); scanf( "%f", &f ); printf( "tapez un double : " ); scanf( "%lf", &d ); printf( "Vous avez entré %d, %f, et %lf\n", i, f, d );