6.2.2 Gestion du tampon par scanf

Deux tampons pour la saisie Une conversion non réussie (type de la variable d'accueil non adapté à la donnée) provoque un mauvais fonctionnement des lectures suivantes : la donnée incorrecte est présentée en réponse à toutes les interrogations scanf qui suivent, jusqu'à ce qu'elle soit absorbée par l'une d'elles, libérant ainsi le tampon du C. De même, un excès de données en entrée perturbe les lectures suivantes : les caractères excédentaires restent dans le tampon et sont proposés en réponse aux interrogations scanf qui suivent.
Saisie de caractères : attention danger ! A la fin de la dernière conversion effectuée par une instruction scanf, il reste dans le tampon du C au moins le dernier caractère fin de ligne (caractère '\n' généré par la frappe de la touche ENTREE). Ce reliquat du tampon sera présenté lors de la prochaine interrogation scanf. Si scanf cherche à lire une valeur numérique, '\n' sera considéré comme un séparateur que scanf sautera naturellement ; par contre, si la première donnée que cherche à lire scanf est un caractère, celui‐ci sera automatiquement chargé avec '\n' et aucune interrogation ne sera affichée (pas de curseur clignotant)... Le programmeur doit donc prendre particulièrement garde à la gestion du tampon lors de la lecture de caractères : la solution est rewind.
Nettoyer le tampon avant la saisie : rewind Les explications précédentes montrent qu'il est important de s'assurer que le tampon du C est nettoyé avant d'utiliser scanf, surtout lors de la lecture de caractères. C'est pourquoi la bibliothèque standard du C met à notre disposition une fonction rewind qui permet de vider le tampon du C. Sa syntaxe est :
stdin est le flux standard d'entrée, en principe la console. De même, le flux standard en sortie stdout représente généralement l'écran.
|