#include <stdio.h> #int printf( const char *format [, arg [, arg]...]);
Elle permet l'écriture formatée sur le flux standard de sortie stdout (l'écran par défaut).
La chaîne de caractères format peut contenir à la fois :
le nombre d'octets effectivement écrits ou la constante EOF (-1) en cas d'erreur.
ils sont introduites par le caractère % et se terminent par le caractère de type de conversion suivant la syntaxe suivante :
% [drapeaux] [largeur] [.precision] [modificateur] type
| drapeaux | Signification |
|---|---|
| rien | justifié à droite et complété à gauche par des espaces |
| - | justifié à gauche et complété à droite par des espaces |
| + | les résultats commencent toujours par le signe + ou - |
| espace | le signe n'est affiché que pour les valeurs négatives |
| # | forme alternative. Si le type de conversion est : c,s,d,i,u : sans effet o : un 0 sera placé devant la valeur x, X : 0x ou 0X sera placé devant la valeur e, E, f : le point décimal sera toujours affiché g, G : même chose que e ou E, mais sans supprimer les zéros à droite |
Si la valeur à afficher dépasse la taille de la fenêtre ainsi définie, C utilise quand même la place nécessaire.
| largeur | Effet sur l'affichage |
|---|---|
| n | affiche n caractères, complété éventuellement par des espaces |
| 0n | affiche n caractères, complété éventuellement à gauche par des 0 |
| * | l'argument suivant de la liste fournit la largeur |
| .precision | Effet sur l'affichage |
|---|---|
| rien | précision par défaut : d,i,o,u,x : 1 chiffre e, E, f : 6 chiffres pour la partie décimale. |
| .0 | d,i,o,u,x : précision par défaut e, E, f : pas de point décimal |
| .n | n caractères au plus |
| * | l'argument suivant de la liste contient la précision |
| Modificateur | interprétation comme |
|---|---|
| h | un entier de type short (d,i,o,u,x,X) |
| l | un entier de type long (d,i,o,u,x,X) |
| L | un réel de type long double (e,E,f,g,G) |
| Type | Format de la sortie |
|---|---|
| d ou i | entier décimal signé |
| o | entier octal non signé |
| u | entier décimal non signé |
| x | entier hexadécimal non signé |
| X | entier hexadécimal non signé en majuscules |
| f | réel de la forme [-]dddd.ddd |
| e | réel de la forme [-]d.ddd e [+/-]ddd |
| E | comme e mais l'exposant est la lettre E |
| g | format e ou f suivant la précision |
| G | comme g mais l'exposant est la lettre E |
| c | caractère |
| s | affiche les caractères jusqu'au caractère nul '\0' ou jusqu'à ce que la précision soit atteinte |
| p | pointeur |
#include <stdio.h>
main() {
int nbre = 5;
char *chaine = "Le langage C";
long prix = 12.0L;
long double result = prix * nbre;
printf("Bonjour\n");
printf("Nombre %d prix %ld Total %9ld\n",nbre, prix, prix * nbre);
printf("%s est facile\n", chaine);
printf("%8.2Lf \n", result);
printf("%*.*Lf \n", 8, 2, result); /* equivalent a %8.2Lf */
printf("\n"); /* affichage du caractère % */
return 0;
}
/*-- résultat de l'exécution ------------------------------------
Bonjour
Nombre 5 prix 12 Total 60
Le langage C est facile
60.00
60.00
-----------------------------------------------------------------*/
| instruction C | résultat |
|---|---|
| printf("|%d|\n",12345); | |12345| |
| printf("|%+d|\n",12345); | |+12345| |
| printf("|%8d|\n",12345); | | 12345| |
| printf("|%8.6d|\n",12345); | | 012345| |
| printf("|%x|\n",255); | |ff| |
| printf("|%X|\n",255); | |FF| |
| printf("|%#x|\n",255); | |0xff| |
| printf("|%f|\n",1.23456789012345); | |1.234568| |
| printf("|%10.4f|\n",1.23456789); | | 1.2346| |