Traductions de cette page?:

scanf

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ôleType de donnée reçu
%cun seul caractère
%dun nombre décimal
%iun entier
%e, %f, %gun nombre à virgule flottante
%lfun double
%oun nombre au format octal
%sune chaîne de caractères
%xun nombre au format hexadécimal
%pun pointeur
%nun entier égal au nombre de caractères lus jusque là
%uun 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 );

Sujets connexes : fgets, fscanf, printf, sscanf