printf() : affichage formatée
Prototype:
int printf( const char *format [, argument, ...]);
dans: <stdio.h>
Description:
printf applique une spécification de format à un nombre variable d'arguments et écrit le résultat dans stdout.
La chaine de format est une chaîne de caractères contenant deux types d'objets:
- des caractères ordinaires qui seront recopiés dans le flux de sortie.
- des spécifications de format, dont chacune détermine l'argument qui lui correspond et précise l'écriture de la valeur de cet argument.
Les spécifications de format ont la forme suivante:
% [indicateur] [taille] [.préc] [F|N|h|l|L] type
- % est le caractère qui commence une spécification
- indicateur: présence on non de la sortie (facultatif); l'argument correspondant n'est pas affiché, mais est utilisé pour donner la longueur du champ suivant
- taille: nombre minimal de caractères à afficher (facultatif); une valeur négative indique en plus un cadrage à gauche doit être une constante numérique
- préc: nombre de caractères à afficher (facultatif) dans la partie décimale pour un nombre flottant dans la partie entière pour une entier, ce qui permet d'avoir des zéros en tête
- [F|N|h|l|L] remplacement de la longueur par défaut de l'argument (facultatif).
- type: précise le type de l'argument
- pour un entier: d i
- pour une entier non signé : o u x X (o:affichage en octal, x X:en hexadécimal x X)
- pour un flottant: f e E g G
- pour un caractére: c
- pour une chaîne: s
Valeur renvoyée:
- le nombre de valeurs écrites en cas de déroulement normal ou
- EOF en cas d'erreur.
Une erreur se produit par exemple si le fichier associé à stdout est fermé.
Voir aussi:
Portabilité:
DOS,
UNIX,
norme
ANSI
du
langage
C
Exemple:
exemple 1:
#include
void main() {
char c='A';
c='A';
/* Variations sur le type */
printf("\nimpression de %c en caractère : %c", c, c);
printf("\nimpression de %c en entier : %d", c, c);
/* Variations sur la taille et le cadrage (+/-)*/
printf("\nSur 1 position : '%c'", c);
printf("\nSur 3 positions, cadré à droite: '%3c'", c);
printf("\nSur 3 positions, cadré à gauche : '%-3c'", c);
}
exécution:
impression de A en caractère : A
impression de A en entier : 65
Sur 1 position : 'A'
Sur 3 positions, cadré à droite: ' A'
Sur 3 positions, cadré à gauche : 'A '
exemple 2:
#include
void main() {
int a=22;
double p=3.14159;
/* Variations sur la taille */
printf("a=%d a=%4d\n", a, a);
/* Variations sur 'préc' : pour un entier écriture de zéro en tête */
printf("a=%4.4d a=%6.6d \n", a, a);
/* Variations sur 'préc' : pour un double, nombre de chiffres après le point */
printf("pi=%.2lf pi=%.4lf \n", p, p);
}
exécution:
a=22 a= 22
a=0022 a=000022
pi=3.14 pi=3.1416
exemple 3:
#include
void main() {
int i=22; long int li=22;
float fp=3.14159; double dp=3.14159;
/* Variations sur la longueur par défaut de l'argument */
printf("fp=%f dp=%lf \n", fp, dp);
printf("i=%d li=%ld \n", i, li);
}
exécution:
fp=3.141590 dp=3.141590
i=22 li=22
exemple 4:
#include
void main() {
char * mess1="pi :", * mess2=" e :";
double dp=3.14159, de=2.718281828;
/* Variations sur la taille de la zone écrite */
printf("%*s %*s \n", 9, mess1, 15, mess2);
printf("%*lf %*.9lf \n", 9, dp, 15, de);
}
exécution:
pi : e :
3.141590 2.718281828