La fonction printf() est la principale instruction d’affichage du langage C. Elle permet d’écrire du texte, des nombres ou des variables dans la console, souvent pour informer l’utilisateur ou vérifier le comportement d’un programme. Très flexible, elle utilise des spécificateurs de format comme %d, %f, %c ou %s pour afficher différents types de données.
À la fin de ce chapitre, tu sauras :
printf().%d, %f, %c, %s).printf() (abréviation de print formatted) est la fonction principale d’affichage en langage C.
Elle permet d’écrire du texte, des nombres ou des valeurs de variables dans la console.
Elle fait partie de la bibliothèque standard stdio.h, qu’il faut inclure au début du programme :
#include <stdio.h>
#include <stdio.h>
int main() {
printf("Bonjour, monde !");
return 0;
}
💡 Le texte à afficher est toujours placé entre guillemets " ".
Pour afficher la valeur d’une variable, on utilise un spécificateur de format (%...) qui indique à printf le type de donnée à afficher.
| Spécificateur | Type affiché | Exemple |
|---|---|---|
%d |
entier (int) |
printf("%d", age); |
%f |
réel (float) |
printf("%f", moyenne); |
%c |
caractère (char) |
printf("%c", lettre); |
%s |
chaîne de caractères (char[]) |
printf("%s", nom); |
Exemple :
int age = 16;
printf("J'ai %d ans.\n", age);
Résultat :
J'ai 16 ans.
Tu peux afficher plusieurs variables dans une même chaîne, en respectant l’ordre des formats :
int jour = 13;
char mois[] = "octobre";
int annee = 2025;
printf("Nous sommes le %d %s %d.\n", jour, mois, annee);
Résultat :
Nous sommes le 13 octobre 2025.
Le caractère spécial \n sert à faire un saut de ligne. Quand tu l’utilises dans un printf, cela indique à l’ordinateur de passer à la ligne suivante après avoir affiché le texte. Sans \n, tout s’afficherait sur une seule ligne :
Exemple sans saut de ligne :
printf("Bonjour");
printf("Tout le monde");
Résultat à l’écran :
BonjourTout le monde
Exemple avec saut de ligne:
printf("Bonjour\n");
printf("Tout le monde\n");
Résultat à l’écran :
Bonjour
Tout le monde
printf() comprend certains caractères spéciaux qui modifient la mise en forme du texte :
| Code | Signification | Exemple |
|---|---|---|
\n |
passage à la ligne | printf("Bonjour!\n"); |
\t |
tabulation | printf("Nom\tAge\n"); |
\\ |
affiche un antislash \ |
printf("\\"); |
\" |
affiche une guillemet double | printf("\"C\""); |
Pour afficher un nombre réel avec 2 décimales :
float moyenne = 14.357;
printf("Moyenne : %.2f\n", moyenne);
Résultat :
Moyenne : 14.36
Dans l’instruction printf("Moyenne : %.2f\n", moyenne);, la chaîne entre guillemets contient du texte et un spécificateur de format %.2f :
%f indique que l’on veut afficher un nombre réel (de type float ou double) ;.2 précise qu’on veut afficher deux chiffres après la virgule ;\n ajoute un saut de ligne à la fin du texte.Ainsi, si la variable moyenne vaut 14.357, le programme affichera :
Moyenne : 14.36
Le nombre est automatiquement arrondi à deux décimales pour un affichage plus lisible (selon les règles classiques des arrondis).
Tu peux aussi aligner ou espacer les valeurs :
printf("%6d\n", 42); // Affiche " 42" (avec 4 espaces devant)
printf("%06d\n", 42); // Affiche "000042" (complète avec des 0)
%6 indique que le nombre doit aligné à droite dans une zone de 6 caractères de long rempli par des espaces
%06 indique que le nombre doit aligné à droite dans une zone de 6 caractères de long rempli par des zéros
%d affiche un entier
❌ Oublier les guillemets autour du texte :
printf(Salut); // Erreur
✅ Correct :
printf("Salut");
❌ Ne pas mettre le bon format :
int x = 10;
printf("%f", x); // Mauvais type (int ≠ float)
✅ Correct :
printf("%d", x);
printf() affiche du texte ou des valeurs à l’écran." ".\n permet de passer à la ligne suivante.Voici quelques exemples classiques de mauvaise utilisation des modificateurs de format dans printf() et leur impact concret sur l’affichage 👇
int age = 16;
printf("%f", age); // Mauvais format
💬 Problème : %f sert à afficher un nombre réel (float), pas un entier.
🎯 Résultat possible : affichage d’un nombre aléatoire ou incohérent, car printf interprète les bits de l’entier comme un réel. Ou 0. Ca dépend du compilateur.
✅ Correct :
printf("%d", age);
float moyenne = 13.5;
printf("%d", moyenne); // Mauvais format
💬 Problème : %d est prévu pour un entier.
🎯 Résultat : la valeur affichée n’aura aucun sens (souvent un grand entier négatif).
✅ Correct :
printf("%f", moyenne);
char nom[] = "Alice";
printf("%c", nom); // Mauvais format
💬 Problème : %c affiche un seul caractère, alors que nom est un tableau (char[]).
🎯 Résultat : l’affichage est imprévisible (souvent un symbole bizarre).
✅ Correct :
printf("%s", nom);
int a = 5, b = 10;
printf("a = %d, b = %d, c = %d\n", a, b); // Une variable manquante
💬 Problème : le dernier %d n’a pas de valeur associée.
🎯 Résultat : affichage d’un nombre aléatoire, ou plantage du programme.
✅ Correct :
printf("a = %d, b = %d\n", a, b);
int x = 5;
float y = 3.14;
printf("x = %f, y = %d\n", x, y); // Mauvais ordre
💬 Problème : les variables ne correspondent pas au bon type de format. 🎯 Résultat : les valeurs affichées seront totalement fausses. ✅ Correct :
printf("x = %d, y = %f\n", x, y);
printf("Bonjour");
printf("tout le monde");
💬 Problème : le texte s’enchaîne sans séparation. 🎯 Résultat :
Bonjourtout le monde
✅ Correct :
printf("Bonjour\n");
printf("tout le monde\n");
%d, %f, %c, %s, etc.) correspond à un type précis.