A la manière de putchar, l'instruction printf permet de faire afficher à l'écran la valeur d'une variable, un libellé, la valeur d'une expression, une chaîne de caractères, et cela selon divers formats (associés aux différents types de variables).
Sa syntaxe est:
printf(chaîne_formée_de_libellé_et_de_formats,nom_1, nom_2, ..., nom_n);
Exemples:
printf("%d",n);
/* %d est le format qui permet d'afficher un entier,
ici n */
printf("total
: %d",n); /* ici, on fait afficher la chaîne
"total : " avant la valeur de n */
printf("nombre1
: %d nombre2 : %d",n,p); /* on peut faire afficher
plusieurs variables */
printf("la
somme est de : %d",n+p); /* on peut faire afficher
la valeur d'une expression */
L'instruction d'affichage ne se contente pas de transmettre à l'écran le simple contenu des valeurs concernées. Elle doit également transformer ce contenu en un ou plusieurs caractères compréhensibles. Pour y parvenir, on fait appel au formatage des données.
Les formats principaux:
Pour le type entier : %d
Pour le type caractère : %c
Pour le type décimal :
%f si on le veut en format décimal (ex : 12345.599000)
%e
si on le veut en format exponentielle (ex : 1.234560e+04)
%s pour afficher
des chaînes de caractères.
Par défaut, les entiers sont affichés avec le nombre de caractères nécessaires,
tout comme les caractères, en revanche les décimaux, sont affichés avec
6 chiffres après le point.
Un nombre placé après le %
dans le code de format, précise un nombre minimal de caractères à utiliser.
Si le nombre peut s'écrire avec moins de caractères, printf
le fera précéder d'un nombre suffisant d'espaces ; en revanche, si
le nombre ne peut s'afficher dans le gabarit imposé, printf
utilisera le nombre de caractères nécessaires.
Exemples: (ici : la notation ^ matérialise un espace):
printf("%3d",n);
si n=20 alors il est affiché : ^20
si n=3 alors il est affiché : ^^3
si n=-5 alors il est affiché : ^-5
si n=2358 alors il est affiché : 2358
si n=-5200 alors il est affiché : -5200
printf("%10f",x);
si x= 1.2345 alors il est affiché : ^^1.234500
si x= 12.345 alors il est affiché : ^12.345000
si x= 1.2345e5 alors il est affiché : 123450.000000
Il est également possible de préciser le nombre de caractères souhaités après le point. Il suffit de faire précéder le format du chiffre de caractères souhaités, lui-même précédé d'un point.
Exemples:
printf("%10.3f",x);
si x= 1.2345 alors il est affiché : ^^^^^1.234
si x= 1.2345e3 alors il est affiché : ^^1234.500
si x= 1.2345e7 alors il est affiché : 12345000.000
printf("%12.4e",x);
si x= 1.2345 alors il est affiché : ^^1.2345e+00
si x= 123.456789e8 alors il est affiché : ^^1.2346e+10
Enfin pour présenter correctement l'affichage des données, il est possible d'utiliser des caractères spéciaux:
printf("ligne1\nligne2");
/* \n sert à sauter une
ligne */
printf("col1\tcol2");
/* \t sert à insérer
une tabulation */
A la manière de getchar, l'instruction scanf a pour rôle de lire une information saisie au clavier. Comme printf, la fonction scanf possède en premier argument un format exprimé sous forme d'une chaîne de caractères. Les présentations d'affichage et les formats d'affichage de scanf sont identiques à ceux de printf.
Sa syntaxe est:
scanf(chaîne_formée_de_formats,&nom_1,&nom_2,...,&nom_n);
Attention : Il est impératif de placer un & devant chaque nom de variable, dans une fonction scanf. En effet, la fonction scanf doit être en mesure de ranger la valeur lue dans l'emplacement correspondant à cette variable : il lui faut en paramètre l'adresse de cette variable. C'est pourquoi il ne faut pas omettre le & devant les noms de variable, sans quoi la fonction scanf rangerait les valeurs lues, sans savoir où les récupérer.
Exemple:
scanf("%d",&n);
/* les formats sont les mêmes que pour printf */
scanf("%d%d",&n,&p);
/* lit deux entiers et les range dans n et p */
Remarque : Lorsqu'on lit deux valeurs (ou plus) dans un même appel à la fonction scanf, la fonction lit les deux valeurs séparées par un ou des espace(s) i.e. blanc, tabulation ou retour chariot.
Attention : pour la lecture d'une chaîne de caractères, le symbole & ne doit pas être utilisé.