Dans ce nouveau chapitre, nous allons étudier les entrées/sorties. Il ne s'agit pas des entrées et sorties au sens électronique du terme (GPIO en anglais). Il s'agit plutôt des entrées et sorties du processeur (clavier, écran, lecture/écriture dans des fichiers).
La fonction printf qui permet d'afficher des messages dans la console est la
première que nous allons étudier.
printf est une fonction de la bibliothèque stdio.h. Le premier paramètre est nécessairement
une chaîne de caractères :
printf ("Hello world");
Il est possible d'afficher des variables en insérant autant de codes de format dans la chaîne de caractères.
printf ("1 variable : %d", u);
printf ("2 variables : %d , %d", u, v);
printf ("3 variables : %d , %d , %d", u, v, w);
Comme le symbole % est réservé aux code de format, pour afficher un % dans un printf,
il faut le doubler :
printf ("10 %% de réduction");
Les codes de format sont présentés sur cette page.
Il est possible de formater l'affichage en spécifiant le nombre de caractères minimum
juste après le %.
// Affiche sur 5 caractères minimum et complète avec des zéros
// Affiche 00015
printf ("%05d", 15);
0 stipule que l'on complète avec des 0 ;5 impose 5 caractères minimum.// Affiche sur 2 caractères minimum et compléte avec des zéro (inutile ici)
// Affiche 126
printf ("%02d", 126);
S'il n'y a pas de zéro, on complète avec des espaces :
// Affiche sur 5 caractères minimum et complète avec des espaces
// Affiche 3 espace avant le 15 : ___15
printf ("%5d", 15);
Il est possible d'afficher les entiers en hexadécimal grâce au code de format %x.
Le formatage du code de format %x est similaire à celui du code %d. Notons toutefois :
%x affiche les lettres en minuscule ; %X affiche les lettres en majuscule.Par exemple :
// Affiche sous forme décimale avec différents formats
printf ("%%x : %x\n", val);
printf ("%%X : %X\n", val);
printf ("%%4x : %4x\n", val);
printf ("%%04x : %04x\n", val);
printf ("%%08X : %08X\n", val);
Pour les flottants, le principe est similaire. Le point est comptabilisé dans le comptage des caractères. On peut aussi spécifier le nombre de chiffres après la virgule :
// 8 caractères minimum et 2 chiffres après la virgule (compléte avec des zéros)
// Affiche 00000.12
printf ("%08.2f", 0.12345)
De même, en omettant le zéro, il sera possible de compléter avec des espaces :
// 8 caractères minimum et 2 chiffres après la virgule (compléte avec des espaces)
// Affiche ____0.12
printf ("%8.2f", 0.12345)
Écrire un programme qui affiche π avec 7 chiffres après la virgule. Utilisez la
constante M_PI de la bibliothèque math.h.
Écrire un programme qui affiche les variables sur 8 caractères complétés avec des espaces :
int a=1, b=1234, c=125;
// Affiche a, b et c sur 8 caractères.
// COMPLETEZ ICI
Voici l'affichage attendu :
a = 1
b = 1234
c = 125
Écrire un programme qui affiche la variable x en hexadécimal sur 32 bits :
int x = 2737;
// Affiche x en hexadécimal sur 32 bits
// COMPLETEZ ICI
Voici l'affichage attendu :
x = 0x00000AB1
Qu'affiche ce code ?
printf ("%06d", 101);
Qu'affiche ce code ?
printf ("%03d", 156987);
Qu'affiche ce code ?
printf ("%6d", 101);
Qu'affiche ce code ?
printf ("%.2f", 123.456);
Qu'affiche ce code ?
printf ("%08.2f", 123.456);
Quelle instruction permet d'afficher x avec 4 chiffres après la virgule ?
Comment afficher le caractère % dans un printf ? ?
Qu'affiche ce code ?
printf ("%06X", 0xacdc);
%06X affiche en hexadécimal (majuscule), 6 caractères minimum, complétés avec des zéros.
Essaie encore ...