Syntaxe :
#include <cstdio> int printf( const char *format, ... );
La fonction printf
envoie une chaîne de caractères vers stdout
, formatée selon format
et d'autres
arguments passés à printf
.
La chaîne de charactère format
est composée de deux types d'objets :
printf
vont être affichés.
En résumé, il s'agit de spécifier une chaîne de caractères contenant du texte ainsi que des caractères
spéciaux. Ces caractères spéciaux correspondent aux arguments supplémentaires fournis à la fonction
printf
.
Par exemple, le code suivant :
char name[20] = "Robert"; int age = 21; printf( "Bonjour %s, vous avez %d ans.\n", name, age );
affiche à l'écran la sortie suivante :
Bonjour Robert, vous avez 21 ans.
Le %s
signifie, “Insère le premier argument, une chaîne de caractères, à cet endroit.”
Le %d
indique que le second argument, un nombre entier, doit être placé à cet emplacement.
La valeur retournée par la fonction printf
est le nombre de caractères imprimés, ou un nombre négatif en cas d'erreur.
Il existe différents %-codes selon le type de variable, ainsi que des options pour limiter la longueur des variables, ou modifier la façon de les afficher.
Code | Format |
---|---|
%c | caractère |
%d | entier signé |
%i | entier non signé |
%I64d | entier signé très très long (8 octets), spécifique à MS |
%I64u | entier non signé très très long (8octets), spécifique à MS |
%e | notation scientifique, utilisant “e” minuscule |
%E | notation scientifique, utilisant “E” majuscule |
%f | nombre flottant |
%g | utilise %e ou %f, en fonction de celui qui est le plus court |
%G | utilise %E ou %f, en fonction de celui qui est le plus court |
%o | nombre octal |
%s | une chaîne de caractères |
%u | entier non signé |
%x | nombre hexadécimal, utilisant des lettres minuscules |
%X | nombre hexadécimal, utilisant des lettres majuscules |
%p | un pointeur |
%n | l'argument doit être un pointeur vers un entier dans lequel sera placé le nombre de caractères écrits jusqu'à présent |
Un entier placé entre %
et la dénomination du format agit comme un modificateur
de largeur minimum ; printf
va compléter avec des espaces ou des 0
pour atteindre
la longueur spécifiée. Pour compléter avec des zéros, il vous faut l'indiquer en
plaçant un '0' avant le modificateur de largeur comme ceci :
%012d
Vous pouvez également préciser la largeur minimum du champ dans une variable entière
si, à la place du nombre vous mettez un *
:
int largeur = 12; int age = 100; printf("%*d", largeur, age);
Vous pouvez également spécifier la précision, en insérant un .N
(où N
est un nombre)
avant la commande de format :
%012.4d
Le modificateur de précision peut signifier différentes choses selon la commande de formatage utilisée :
%e
, %E
, et %f
, le modificateur de précision vous laisse choisir le nombre de décimales du nombre. Par exemple, %12.6f
affichera un nombre flottant d'une largeur de 12 caractères au moins dont 6 pour la partie décimale.%g
et %G
, le modificateur de précision vous laisse le choix du nombre maximum de chiffres significatifs à afficher.%s
, le modificateur de précision agit simplement comme une largeur maximale, en complément de la largeur minimal qui précède le point (.
).
Comme avec les modificateur de largeur, vous pouvez utiliser des
variables entière pour le modificateur de précision en utilisant
*
:
const char* msg = "Bonjour printf"; int taille_msg = strlen(msg); printf("msg: %.*s", taille_msg, msg);
Toutes les affichages de printf
sont justifiés à droite, sauf si vous indiquez le
contraire en ajoutant un signe moins (-
) juste après le signe %
. Par exemple :
%-12.4f
va afficher un nombre à virgule flottant e avec un minimum de 12 caractères (dont 4 décimales) et justifié à gauche.
Vous pouvez ajouter les paramètres l
et h
aux codes de formatage suivants :
%d
%i
%o
%u
%x
Pour spécifier un type de donnée plus grand (long
) ou plus petit (short
) que
le type de données usuel. Par exemple, %hd
signifie affiche un short int
.
Les codes de formatage %e
, %f
, et %g
peuvent également être précédés par un l
pour
indiquer l'affichage d'un double
.
Les codes de formatage %g
, %f
, et %e
peuvent être précédés d'un #
pour
forcer l'affichage du point décimal, même si le nombre n'a pas de partie décimale.
L'utilisation du caractère #
avec le code de formatage %x
indique que le nombre hexadécimal
sera affiché avec le préfixe 0x
.
L'utilisation du caractère #
avec le code de formatage %o
indique que le nombre octal sera
affiché avec le préfixe 0
.
L'insertion d'un caractère +
dans le code de formatage forcera l'affichage d'un +
avant les valeurs positives.
L'insertion d'un espace ' ' dans le code de formatage forcera l'affichage d'un espace avant une valeur positive.
Vous pouvez également inclure des séquences d'échappement dans la chaîne de sortie.