Cours 4.1. printf

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

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'insérer des variables en insérant autant de codes de format dans la chaîne de caractères.

printf ("Résultat du calcul : %d", u);
printf ("Résultat du calcul : %d + %d", u, v);
printf ("Résultat du calcul : %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");

Formatage des entiers

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);
// 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);

Formatage en hexadécimal

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 :

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);

Formatage des flottants

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)

Exercice 1

Écrire un programme qui affiche π avec 7 chiffres après la virgule. Utilisez la constante M_PI de la bibliothèque math.h.

Exercice 2

É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

Exercice 3

É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

Quiz

Qu'affiche ce code ?

printf ("%06d", 101);
Vérifier Bravo ! 6 caractères minimum complétés avec des zéros. Essaie encore ...

Qu'affiche ce code ?

printf ("%03d", 156987);
Vérifier Bravo ! Le nombre à afficher est composé de plus de 3 caractères, on ajoute aucun zéro. Essaie encore ...

Qu'affiche ce code ?

printf ("%6d", 101);
Vérifier Bravo ! 6 caractères minimum, complétés avec des espaces. Essaie encore ...

Qu'affiche ce code ?

printf ("%.2f", 123.456);
Vérifier Bravo ! Deux chiffres après la virgule, arrondis au plus proche. Essaie encore ...

Qu'affiche ce code ?

printf ("%08.2f", 123.456);
Vérifier Bravo ! Deux chiffres après la virgule et 8 caractères minimum complétés avec des zéros. Essaie encore ...

Quelle instruction permet d'afficher x avec 4 chiffres après la virgule ?

Vérifier Bravo ! Si c'est un nombre à virgule, ça ne peut pas être le code de format %d comme code de format : %%. Essaie encore ...

Comment afficher le caractère % dans un printf ? ?

Vérifier Bravo ! Pour afficher un %, il faut le doubler pour le distinguer des codes de format. Essaie encore ...

Qu'affiche ce code ?

printf ("%06X", 0xacdc);
Vérifier Bravo ! %06X affiche en hexadécimal (majuscule), 6 caractères minimum, complétés avec des zéros. Essaie encore ...

Voir aussi


Dernière mise à jour : 07/10/2021