Si
nous voulons afficher un entier par exemple, que doit-on fournir à la fonction
d'affichage (printf par exemple) : la valeur de
l'entier que nous voulons afficher ou l'adresse de la variable contenant le
nombre que nous voulons afficher ?
La bonne réponse est : l'entier que nous voulons afficher bien sûr, autrement
dit sa valeur. Personne n'a demandé son adresse !
Maintenant, si nous voulons demander à l'utilisateur (celui qui utilise notre
programme) de taper un nombre puis ranger le nombre ainsi tapé dans une
variable, que devons-nous fournir à la fonction permettant la saisie :
l'adresse de la variable dans laquelle nous souhaitons ranger le nombre que
l'utilisateur a entré, ou la valeur que contient actuellement cette variable ?
La bonne réponse est : l'adresse de la variable dans laquelle nous souhaitons
ranger le nombre entré
La fonction scanf, déclarée dans le fichier stdio.h, permet de lire des données formatées sur l'entrée
standard, par défaut le clavier.
Voici un programme qui demande à l'utilisateur d'entrer 2 nombres puis affiche
leur somme :
|
Mais
faites gaffe avec la fonction scanf ! "%d"
par exemple n'a rien à voir avec " %d ". En effet dans ce dernier
cas, le format attendu par la fonction est :
|
Où
espace désigne en fait n'importe quel caractère ou série de caractères blancs
(espace, tabulation, etc.). Voici un exemple beaucoup plus convaincant :
|
L'utilisateur
devra alors taper par exemple :
|
Peu
importe le nombre de caractères blancs entre 22 et ans.
C'est ce qu'on appelle une saisie formatée. Les fonctions telles que scanf sont plutôt destinées à être utilisées pour lire des
données provenant d'un programme sûr (par l'intermédiaire d'un fichier par
exemple), pas celles provenant d'un humain, qui sont sujettes à l'erreur. Les
codes format utilisés dans scanf sont à peu près les
mêmes que dans printf, sauf pour les flottants
notamment.
|
Code format |
Utilisation |
|
f,
e, g |
float |
|
lf, le, lg |
double |
|
Lf, Le, Lg |
long
double |
Voici
un programme qui permet de calculer le volume d'un cône droit à base circulaire
selon la formule : V = 1/3 * (B * h) où B est la surface de base soit pour une
base circulaire : B = PI*R2, où R est le rayon de la base.
|
Voici
un programme simple qui permute le contenu de deux variables.
|