Cours 3.12 Sommaire Cours 4.2
Dans ce nouveau chapitre, nous allons étudier les entrées/sorties. Il ne s'agit pasdes entrées et sorties au sens électronique du terme (GPIO en anglais). Il s'agit plutôtdes 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 lapremière que nous allons étudier.
printf
printf
est une fonction de la bibliothèque stdio.h
. Le premier paramètre est nécessairementune 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înede caractères.
- Le premier code de format sera remplacé par la valeur de la première variable
- Le deuxième code de format sera remplacé par la valeur de la deuxième variable
- ...
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");
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 minimumjuste après le %
.
// Affiche sur 5 caractères minimum et complète avec des zéros// Affiche 00015printf ("%05d", 15);
- Le
0
stipule que l'on complète avec des 0 ; - le
5
impose 5 caractères minimum.
// Affiche sur 2 caractères minimum et compléte avec des zéro (inutile ici)// Affiche 126printf ("%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 : ___15printf ("%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 :
%x
affiche les lettres en minuscule ;%X
affiche les lettres en majuscule.
Par exemple :
// Affiche sous forme décimale avec différents formatsprintf ("%%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 lecomptage des caractères. On peut aussi spécifier le nombre de chiffresaprès la virgule :
// 8 caractères minimum et 2 chiffres après la virgule (compléte avec des zéros)// Affiche 00000.12printf ("%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.12printf ("%8.2f", 0.12345)
Exercices
Exercice 1
Écrire un programme qui affiche π avec 7 chiffres après la virgule. Utilisez laconstante 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 = 1b = 1234c = 125
Solution
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
Solution
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 : %.4f. 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 ...
Cours 3.12 Sommaire Cours 4.2
Voir aussi
- Cours de programmation en C
- Cours 1.1. Histoire du C
- Cours 1.2. Premier programme
- Cours 1.3. Compilation
- Cours 1.4. Les directives de compilation
- Cours 1.5. Quel compilateur choisir ?
- Cours 1.6. Les organigrammes
- Cours 2.1. Les types de variables
- Cours 2.2. Les entiers
- Cours 2.3. Les nombres décimaux
- Cours 2.4. Les caractères
- Cours 2.5. Initialisation des variables
- Cours 2.6. Le vol 501 d'Ariane
- Cours 3.1. Les opérateurs arithmétiques
- Cours 3.2. Le modulo
- Cours 3.3. Le type dans les opérations
- Cours 3.4. Les conversion de type forcé
- Cours 3.5. Les opérateurs bit à bit
- Cours 3.6. Détail des opérateurs bit à bit
- Cours 3.7. Opérateurs de décalage
- Cours 3.8. Opérateurs d'affectation
- Cours 3.9. Opérateur d'incrémentation/décrémentation
- Cours 3.10. Les opérateurs de comparaison
- Cours 3.11. Opérateurs logiques
- Cours 3.12. Priorité des opérateurs
- Cours 4.2. scanf
- Cours 4.3. putchar
- Cours 5.1. Branchement conditionnel (if...else)
- Cours 5.2. if imbriqués et indentation
- Cours 5.3. Tester des intervalles
- Cours 5.4. Opérateur conditionnel ternaire ( ?: )
- Cours 5.5. L'instruction switch..case
- Cours 5.6. Le break dans les switchs
- Cours 6.1. La boucle do..while en C
- Cours 6.2. La boucle while en C
- Cours 6.3. La boucle for
- Cours 6.4. Comment choisir une boucle en C ?
- Cours 6.5. Exercices sur les boucles en C
- Cours 7.1. Masquages
- Cours 7.2. Masquage : forçage à zéro
- Cours 7.3. Forçage à un
- Cours 7.4. Inversion de bits
- Cours 7.5. Tester un bit
- Cours 7.6. Synthèse des masquages
- Cours 8.1. Syntaxe des fonctions en C
- Cours 8.2. L'appel des fonctions
- Cours 8.3. Le mot-clé void dans les fonctions
- Cours 8.4. Le mot-clé return dans les fonctions
- Cours 8.5. Portée des variables
- Cours 8.6. Les variables globales
- Cours 8.7. Les variables statiques
- Cours 8.8. Nombres aléatoires en C
- Cours 8.9. Fonctions mathématiques en C
- Cours 9.1. Syntaxe des tableaux en C
- Cours 9.2. Initialisation des tableaux en C
- Cours 9.3. Les tableaux multidimensionnels en C
- Cours 9.4. Comment les tableaux sont stockés en mémoire en C?
- Cours 9.5. Les tableaux dans les fonctions
- Cours 9.6. Exercices sur les tableaux en C
- Cours 10.1. Les chaines de caractères en C
- Cours 10.2. Le caractère de fin de chaîne
- Cours 10.3. La bibliothèque string.h
- Cours 10.4. Chaînes de caractères et fonctions
- Cours 11.1. Introduction aux pointeurs en C
- Cours 11.2. Syntaxe des pointeurs en C
- Cours 11.3. Allocation mémoire dynamique
- Cours 11.4. Incrémentation des pointeurs
- Cours 11.5. Passage de paramètres par pointeur
- Cours 12.1. Introduction aux structures en C
- Cours 12.2. Propriétés des structures en C
- Cours 12.3. Structures et pointeurs
- Cours 12.4. Structures et fonctions
- Cours 13.1. Fonctions récursives en C
- Cours 13.2. Profondeur des fonctions récursives
- Cours 13.3. Récursion croisée
- Cours 14.1. Exercices complémentaires
Dernière mise à jour : 04/10/2023