IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
next up previous contents index
Next: Les dernières instructions Up: Les pointeurs Previous: Exercice

Sous-sections

   
Lecture formattée

   

Il existe dans la bibliothèque standard une fonction de lecture formattée qui fonctionne selon le même principe que la procédure printf. Sa syntaxe d'utilisation est la suivante :
scanf ( format , liste-d'expressions ) ;
format est une chaîne de caractères indiquant sous forme de séquences d'échappement les entités que scanf lit sur l'entrée standard :

-
%d pour un nombre décimal ;
-
%x pour un nombre écrit en hexadécimal ;
-
%c pour un caractère.
Tous les éléments de la liste-d'expressions doivent délivrer après évaluation l'adresse de la variable dans laquelle on veut mettre la valeur lue. Si le flot de caractères lu sur l'entrée standard ne correspond pas à format, scanf cesse d'affecter les variables de liste-d'expressions à la première disparité.   Exemple :

scanf("%d %x",&i,&j);
cette instruction va lire un nombre écrit en décimal et mettre sa valeur dans la variable i, puis lire un nombre écrit en hexadécimal et mettre sa valeur dans la variable j. On aura remarqué que les paramètres i et j ont étés passés par adresse à scanf. Si l'entrée standard commence par un nombre décimal non suivi d'un nombre hexadécimal, seul i recevra une valeur. Si l'entrée standard ne commence pas par un nombre décimal, ni i ni j ne recevront de valeur.

Valeur rendue

Sur rencontre de fin de fichier, la fonction scanf rend EOF, sinon elle rend le nombre de variables qu'elle a pu affecter.  

Attention

Une erreur facile à commettre est d'omettre les opérateurs & devant les paramètres de scanf.   C'est une erreur difficile à détecter car le compilateur ne donnera aucun message d'erreur et à l'exécution, ce sont les valeurs de i et j qui seront interprétées comme des adresses par scanf. Avec un peu de chance ces valeurs seront des adresses invalides, et le programme s'avortera3.2 sur l'exécution du scanf, ce qui donnera une idée du problème. Avec un peu de malchance, ces valeurs donneront des adresses parfaitement acceptables, et le scanf s'exécutera en allant écraser les valeurs d'autres variables qui ne demandaient rien à personne. Le programme pourra s'avorter beaucoup plus tard, rendant très difficile la détection de l'erreur.


next up previous contents index
Next: Les dernières instructions Up: Les pointeurs Previous: Exercice
Bernard Cassagne
1998-12-09