12.3.2 Lecture au clavier d'une chaîne (mot) avec scanf (utilité : *)

Icône de l'outil pédagogique Lecture au clavier d'une chaîne (mot) avec scanf (utilité : *)

Si on désire lire au clavier un mot à la fois pour le stocker dans une chaîne (ce n’est pas le cas le plus fréquent), la fonction scanf convient à condition de l'utiliser avec le code format %s ou %Ns : 

scanf( "%s", text ) ;

lit le clavier et remplit la chaîne text jusqu'à la rencontre d'un séparateur qui peut être un espace, une tabulation ou un passage à la ligne (Entrée). La chaîne text est alors complétée par le caractère nul (de code ASCII 0). A noter : avec scanf (mais pas avec gets), le séparateur rencontré est laissé dans le tampon clavier.

L'utilisation de scanf interdit donc de lire en une fois une chaîne de caractères qui comporte des espaces ou des tabulations, puisque ceux‐ci sont considérés comme des séparateurs par scanf.

Exemple 69 : Lecture et écriture d'une chaîne (un mot à la fois)

Attention à ne pas entrer plus de caractères que ne peut en contenir le tableau ! Etant donné l'absence de contrôle de dépassement du compilateur, il est prudent d'écrire scanf("%Ns", ...), où N représente le nombre de caractères de la chaîne. Ici : scanf("%20s%20s", nom, prenom); 

On remarquera aussi l'absence de l'opérateur & dans scanf , puisque le nom d’un tableau représente déjà son adresse.