scanf

Nom de l'instruction : scanf

Type : entrée / sortie

Bibliothèque : stdio.h

Syntaxe :    scanf( "chaîne de format", liste d'adresses )

Action : provoque la saisie au clavier de valeur pour les ranger aux adresses indiquées. L'instruction bloque le programme jusqu'à la saisie effective d'une ou plusieurs valeurs.

La chaîne de format sert à spécifier des champs typés. 

Champ : Les champs sont spécifiés à l'aide du caractère % suivit de lettres servant à spécifier comment interpréter les valeurs saisies avant de les stocker aux adresses spécifiées. Ainsi :

%d    spécifie un champ pour des valeurs de type int

%f    spécifie un champ pour des valeurs de type float

%c    spécifie un champ pour des valeurs de type char

Ce sont les mêmes champs que pour l'instruction printf

Remarques :

  • Il peut y avoir d'autres caractères dans la chaîne de format que des champs. Par exemple il peut y avoir un caractère de séparation si l'on saisi deux valeurs dans le même scanf.
  • Il peut y avoir un espace avant un champ %c pour éviter de saisir par erreur le dernier caractère frappé au clavier (en général la touche entrée).

Exemple : 

    char car ;

   float reel ;

   scanf(" %c ; %f", &car, &reel ) ;

Provoque la saisie de deux valeurs, l'une de type char ( = un caractère alphanumérique), l'autre une valeur réelle. 

La saisie des deux valeurs implique de les séparer lors de la saisie au clavier par le caractère ; . La première saisie est stockée à l'adresse de la variable car, l'autre à l'adresse de la variable reel.

Noter l'espace devant le " %c", c'est une astuce pour que le scanf ne prenne pas le premier caractère restant dans le tampon du clavier.

L3 EEA & ISS 2019-21 / p. castelan