Traductions de cette page?:

printf

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 :

  • Des caractères qui vont être imprimés à l'écran
  • Des commandes de formattage définissant comment les autres arguments passés à 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.

Codes de formattage

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.

CodeFormat
%ccaractère
%dentier signé
%ientier non signé
%I64dentier signé très très long (8 octets), spécifique à MS
%I64uentier non signé très très long (8octets), spécifique à MS
%enotation scientifique, utilisant “e” minuscule
%Enotation scientifique, utilisant “E” majuscule
%fnombre flottant
%gutilise %e ou %f, en fonction de celui qui est le plus court
%Gutilise %E ou %f, en fonction de celui qui est le plus court
%onombre octal
%sune chaîne de caractères
%uentier non signé
%xnombre hexadécimal, utilisant des lettres minuscules
%Xnombre hexadécimal, utilisant des lettres majuscules
%pun pointeur
%nl'argument doit être un pointeur vers un entier dans lequel sera placé le nombre de caractères écrits jusqu'à présent

Modificateurs de format

Alignement

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);

Précision

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 :

  • Avec %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.
  • Avec %g et %G, le modificateur de précision vous laisse le choix du nombre maximum de chiffres significatifs à afficher.
  • Avec %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.

Types de données short & long

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.

Diverses options

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.

Sujets connexes : fprintf, puts, scanf, sprintf