Introduction :
Les fonctions printf() et scanf() (et dérivées*) de la bibliothèque d'entrée/sortie standard (stdio.h) sont dites fonctions d'entrées et sorties formatées. En effet, il existe pour ces fonctions un certain nombre de formats d'entrée/sortie pour les expressions fournies en paramètres. Par ailleurs, il existe également pour ces fonctions, comme pour d'autres**, un certain nombre de carractères spéciaux encore appelés séquences d'échappement.
* : Les fonctions "dérivées" sont les fonctions sprintf () , sscanf () , fprintf () , fscanf () , ...
** : Il existe d'autres fonctions d'entrée/sortie standard (non-formatées cette fois) à l'exemple de getchar() , putchar() , ...
Dans cette rubrique, nous allons faire une liste des principaux carractères d'échappement et formats utilisés par ces fonctions.
Séquence d'échappement |
Effet |
---|---|
\n |
saut de ligne |
\t |
tabulation horizontale |
\v |
tabulation verticale |
\b |
placement du curseur |
\r |
retour chariot (carriage return) |
\f |
saut de page |
\a |
signal sonore |
\\ |
antislash |
\" |
double quote (guillemet) |
%% |
Caractère "%" |
Format |
Type de donnée |
---|---|
%d, %i |
nombre entier décimal |
%u |
nombre entier non signé (unsigned) |
%o |
nombre entier octal |
%x |
nombre entier hexadécimal (minuscule) |
%X |
nombre entier hexadécimal (majuscule) |
%c |
caractère ASCII (type char) |
%f |
nombre à virgule flottante |
%e, %E |
nombre à virgule flottante au format exponentiel |
%g, %G |
nombre au format %f ou %e (lorsque l'exposant est inférieur à -4) |
%a, %A |
nombre de type double affiché en notation hexadécimale (avec les lettres abcdef en minuscules pour %a et en majuscules pour %A) |
%s |
chaîne de caractères |
%p |
pointeur |
%n |
pointeur (nombre de caractères déjà donnés |
Remarque :
Selon la man page de printf :
- Les formats %d à %X concernent les variables de type int. Pour les variables de type short, il faut ajouter un h après le % (exemple : %hd) et pour les variables de type long, il faut ajouter, il faut ajouter un l après le % (exemple : %ld).
- Les formats %f à %LG concernent les variables de type float. Pour les variables de type double, il faut ajouter un l après le % (exemple : %lf).
Il se peut toutefois que vous ayez un Warning du genre "ISO C90 does not support the `%lf' printf format". En effet, les formats %lf (nombre à virgule de type double), %hhd (char signé) et %hhu (char non signé) n'existent qu'en C99.
Les formats de saisie avec scanf :
Format |
Type de donnée |
---|---|
%d |
entier décimal de type int |
%i |
nombre entier de type int |
%hd |
entier décimal de type short |
%ld |
entier décimal de type long |
%u |
entier décimal de type int non signé (unsigned) |
%hu |
entier décimal de type short non signé (unsigned short) |
%lu |
entier décimal de type long non signé (unsigned long) |
%o |
entier octal de type int |
%ho |
entier octal de type short |
%lo |
entier octal de type long |
%x |
entier hexadécimal de type int |
%hx |
entier hexadécimal de type short |
%lx |
entier hexadécimal de type long |
%c |
caractère ASCII (type char) |
%f |
nombre à virgule flottante de type float |
%lf |
nombre à virgule flottante de type double |
%e, %E |
nombre à virgule flottante au format exponentiel de type float |
%le, %LE |
nombre à virgule flottante au format exponentiel de type double |
%g, %G |
nombre à virgule flottante au format décimal ou exponentiel (lorsque l'exposant est inférieur à -4) de type float |
%lg, %LG |
nombre à virgule flottante au format décimal ou exponentiel (lorsque l’exposant est inférieur à -4) de type double |
%s |
chaîne de caractères |
%p |
pointeur |
%n |
aucune donnée utilisateur (montre le nombre de caractères déjà lus) |