Informations |
- Auteur(s) : idriss
- Catégorie : C et C++
- Moyenne : 16/20
- Date de création : 10/08/2010
- Date mise à jour : 06/09/2012
- Licence :
|
Version imprimable
Entrées et sorties formatées en C
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.
I - Les séquences d'échappement (caractères spéciaux) avec printf :
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 "%"
|
II - Les formats de sortie avec printf :
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)
|
Vous devez être connectés pour poster un commentaire ou une note ...