Dans tout programme informatique, communiquer avec l'utilisateur extérieur est une nécessité vitale. En langage C, les fonctions d'entrée/sortie ne font pas partie intégrante de la syntaxe du langage lui-même, mais sont fournies par la bibliothèque standard via le fichier d'en-tête <stdio.h> (Standard Input/Output).
Cette leçon détaille les fonctions indispensables pour afficher des informations sur la console d'exécution : printf(), putchar() et puts().
1. La fonction maîtresse : printf()#
La fonction printf() (print formatted) est l'instruction d'affichage la plus puissante et la plus utilisée en C. Elle permet d'imprimer du texte brut entremêlé de valeurs calculées en appliquant des règles strictes de formatage.
#include <stdio.h>
int main(void)
{
printf("Bienvenue dans le cours de programmation en C !\n");
return 0;
}
Anatomie d'un appel à printf()#
Un appel à printf() prend en premier argument une chaîne de format (format string) contenant du texte et des spécificateurs de conversion débutant par le symbole %. Chaque spécificateur est ensuite remplacé par la valeur de la variable correspondante passée en argument :
2. Tableau des spécificateurs de format#
Il est capital d'associer le bon spécificateur au type réel de votre variable, sous peine de provoquer des comportements indéfinis (undefined behavior) :
| Spécificateur | Type de donnée C | Exemple de valeur | Exemple d'instruction |
|---|---|---|---|
%d ou %i |
int (entier relatif signé) |
42, -15 |
printf("%d", age); |
%u |
unsigned int (entier positif) |
1500 |
printf("%u", population); |
%ld |
long (entier long) |
2147483648 |
printf("%ld", distance); |
%f |
float ou double (réel à virgule) |
3.14159 |
printf("%f", pi); |
%.2f |
Flottant arrondi à 2 décimales | 14.50 |
printf("%.2f €", prix); |
%c |
char (caractère unique) |
'A', 'z' |
printf("%c", lettre); |
%s |
Tableau de caractères (chaîne de texte) | "AlgoJungle" |
printf("%s", message); |
%x / %X |
Entier au format hexadécimal | 1a / 1A |
printf("0x%X", adresse); |
%p |
Pointeur (adresse mémoire) | 0x7ffd5e... |
printf("%p", (void*)ptr); |
%% |
Affiche le caractère pourcent % |
% |
printf("TVA : 20%%"); |
3. Les séquences d'échappement#
Pour structurer la disposition du texte dans le terminal, on utilise des caractères spéciaux préfixés par un antislash \ :
\n: Retour à la ligne (New Line). Indispensable pour forcer le vidage du tampon de sortie (buffer flush).\t: Tabulation horizontale (aligne les colonnes de texte).\\: Affiche un antislash littéral\.\": Affiche un guillemet double sans fermer la chaîne de texte.\a: Émet un signal sonore (Bell/Alert).
#include <stdio.h>
int main(void)
{
char initiale = 'J';
int matricule = 10452;
float moyenne = 16.789f;
printf("=========================================\n");
printf("FICHE ETUDIANT :\n");
printf("Initiale :\t%c\n", initiale);
printf("Matricule :\t#%06d\n", matricule); // Complète avec des zéros sur 6 chiffres
printf("Moyenne :\t%.2f / 20\n", moyenne); // Arrondi à 2 chiffres après la virgule
printf("Citation :\t\"Apprendre le C est passionnant !\"\n");
printf("=========================================\n");
return 0;
}
=========================================
FICHE ETUDIANT :
Initiale : J
Matricule : #010452
Moyenne : 16.79 / 20
Citation : "Apprendre le C est passionnant !"
=========================================
4. Affichage rapide : putchar() et puts()#
Lorsque vous n'avez pas besoin de formater des nombres, des fonctions plus légères et directes existent :
Afficher un caractère avec putchar()#
La fonction putchar(c) écrit un caractère unique sur la sortie standard. Elle équivaut à printf("%c", c) mais est beaucoup plus rapide :
Afficher une chaîne simple avec puts()#
La fonction puts(chaine) affiche une chaîne de caractères et ajoute automatiquement un retour à la ligne \n à la fin :
puts("Operation terminee avec succes.");
// Équivaut exactement à : printf("Operation terminee avec succes.\n");
[!WARNING] Contrairement à
printf(),puts()ne gère pas les spécificateurs de conversion%dou%f. Ne lui passez que des chaînes de caractères pures.
5. Mise en pratique : Défi d'affichage#
Énoncé : Rédigez un programme en C qui affiche le bulletin suivant parfaitement aligné avec des tabulations et deux décimales pour les notes :
??? tip "Solution du défi"
#include <stdio.h>
int main(void)
{
printf("%-16s\t%-8s\t%-12s\n", "MATIERE", "NOTE", "COEFFICIENT");
printf("%-16s\t%6.2f\t%6d\n", "Algorithmique", 17.50, 3);
printf("%-16s\t%6.2f\t%6d\n", "Langage C", 15.25, 4);
printf("%-16s\t%6.2f\t%6d\n", "Bases de donnees", 14.00, 2);
return 0;
}
Maintenant que nous savons afficher des données, découvrons comment écouter l'utilisateur et récupérer des saisies au clavier dans la leçon suivante.
Commentaires