La fonction printf

d'après A. Braquelaire "Méthodologie de la programmation en langage C", Masson.


Type du paramètre

Symbole

Notation
Options de cadrage et précision
-
+
espace
0
n
.n
l
#
Caractère
c

x



x




Entier sans signe
u
décimale
x


x
x



o
octale
x


x
x

x
x
x, X
hexadécimale
x


x
x

x
x
Entier signé
d, i
décimale
x
x
x
x
x

x


Réel
f
flottante
x
x
x
x
x
x

x
e, E
exponentielle
x
x
x

x
x

x
g, G
générale
x
x
x
x(*)
x
x

x
Chaîne de caractères
s

x



x



Pointeur
p









* : valable uniquement avec l'option # présente.

Effet des options de cadrage et précision
-
cadré à gauche
+
préfixé du signe + si positif (exclut espace)
espace
préfixé avec un espace si le nombre est positif (exclut +)
0
complété à gauche avec des 0
n
nombre minimum de caractère ou * (longueur en paramètre)
.n
précision décimale ou * (longueur en paramètre)
l
le paramètre est un entier long

#
si %o, préfixé par 0
si %x ou %X, préfixé par 0x ou 0X
si %f, %e, %E, ou %g, point décimal toujours présent.

Le programme test_printf.c donne le résultat suivant :
$ test_printf
Type :
entier court 1968 comme un reel 0.000000
chaine "seize caracteres" comme un entier 7800

Notation :
entier long 56849915 en octal 0330672773 et en hexa 0x36375fb
reel 3.1415926536, arrondi a 3.1416, ou encore 3.141593e+00

Cadrage :
entier court 1968
        - sur 8 caracteres (    1968),
        - cadre a gauche (1968    ),
        - complete par des zeros (00001968),
reel 3.1415926536
        - arrondi, a gauche, avec signe (+3.14   )

Noter que la compilation de ce programme avec l'option -Wall génère des warning :
make
gcc -g -Wall -pedantic   -c -o test_printf.o test_printf.c
test_printf.c: In function `main':
test_printf.c:20: warning: double format, different type arg (arg 3)
test_printf.c:21: warning: int format, pointer arg (arg 3)
gcc  -g -Wall -pedantic test_printf.o  -o test_printf

Compilation finished at Wed Feb 11 11:40:57