Partager via


Caractères du champ de type printf

Dans une spécification de format, le caractère type est un spécificateur de conversion qui spécifie si l'argument correspondant doit être interprêté en tant que caractère, chaîne, pointeur, entier, ou nombre à virgule flottante. Le caractère type est le seul champ obligatoire de spécification de format ; et il apparaît après tous les champs facultatifs de format.

Les arguments qui suivent la chaîne de format sont interprétés en fonction du caractère correspondant type et du préfixe facultatif taille. Les conversions pour les types caractères char et wchar_t sont spécifiées à l'aide de c ou C, et des chaînes de caractères codées sur un octet ou multioctets ou à caractères larges sont spécifiées à l'aide de s ou de S, selon la fonction de mise en forme utilisée. Les arguments de caractère et de chaîne qui sont spécifiés à l'aide de c et s sont interprétés comme char et char* par les fonctions de famille printf, ou comme wchar_t et wchar_t* par les fonctions de famille wprintf. Les arguments de caractère et de chaîne qui sont spécifiés à l'aide de C et S sont interprétés comme wchar_t et wchar_t* par les fonctions de famille printf, ou comme char et char* par les fonctions de famille wprintf.

Les types entiers comme short, int, long, long long, et leurs variantes unsigned, sont spécifiées à l'aide de d, de i, de o, de u, de x, et de X. Les types virgule flottante comme float, double, et long double, sont spécifiés à l'aide de a, de A, de e, de E, de f, de g, et de G. Par défaut, sauf s'ils sont modifiés par un préfixe de longueur de champ size, des arguments entiers sont forcés au type int, et des arguments à virgule flottante sont forcés à double. Sur les systèmes 64 bits, int est une valeur 32 bits ; par conséquent, les entiers 64 bits seront tronqués lorsqu'ils sont mis en forme pour la sortie à moins qu'un préfixe size de ll ou I64 soit utilisé. Les types pointeurs spécifiés par p utilisent la longueur par défaut pour la plateforme.

Notes

Les caractères de type C, S, et Z, et le comportement des caractères de type c et s lorsqu'ils sont utilisés avec les fonctions printf et wprintf, sont des extensions Microsoft et ne sont pas compatible ANSI.Visual C++ ne prend pas en charge le caractère du type F.

Caractères du champ de type printf

Caractères de type

Argument

Format de sortie

c

Caractère

En cas d'utilisation avec des fonctions printf, spécifie le caractère codé sur un octet; en cas d'utilisation avec des fonctions wprintf, spécifie le caractère large.

C

Caractère

En cas d'utilisation avec des fonctions printf, spécifie le caractère large ; en cas d'utilisation avec des fonctions wprintf, spécifie le caractère codé sur un octet.

d

Integer

Entier décimal signé.

i

Integer

Entier décimal signé.

o

Integer

Entier octal non signé.

u

Integer

Entier décimal non signé.

x

Integer

Entier non signé hexadécimal ; utilise « abcdef ».

X

Integer

Entier non signé hexadécimal ; utilise "ABCDEF."

e

Virgule flottante

La valeur signée qui a la forme [ – ]d.dddd e [^]dd[d] où d est un chiffre décimal, dddd est un ou plusieurs chiffres décimaux, dd[d] est deux ou trois chiffres décimaux selon le format de sortie et la taille de l'exposant, et le signe est + ou -.

E

Virgule flottante

Identique au format e à ceci près que E plutôt que e présente l'exposant.

f

Virgule flottante

Valeur signée qui a la forme [ – ]dddd.dddd, où dddd est un ou plusieurs chiffres décimaux. Le nombre de chiffres avant que la virgule décimale dépend de la grandeur du nombre, et le nombre de chiffres après la virgule décimale dépend de la précision demandée.

g

Virgule flottante

Les valeurs signées sont affichées en f ou en e, selon celui qui est le plus compact pour la valeur et la précision données. Le format e est utilisé uniquement lorsque l'exposant de la valeur est inférieur à 4 ou supérieur ou égal à l'argument precision. Les zéros à droite sont tronqués, et la virgule décimale s'affiche uniquement si un ou plusieurs chiffres la suivent.

G

Virgule flottante

Identique au format g à ceci près que E plutôt que e présente l'exposant ( là où c'est approprié).

a

Virgule flottante

La valeur en virgule flottante double précision hexadécimale signée qui a la forme [−]0xh.hhhh dd, où h.hhhh sont sont des chiffres hexadécimaux (à l'aide de les lettres minuscules) de la mantisse, et dd sont un ou plusieurs chiffres dans l'exposant. La précision spécifie le nombre de chiffres après le point.

A

Virgule flottante

La valeur en virgule flottante double précision hexadécimale signée qui a la forme [−]0Xh.hhhh dd, où h.hhhh sont sont des chiffres hexadécimaux (à l'aide de les lettres capitales) de la mantisse, et dd sont un ou plusieurs chiffres dans l'exposant. La précision spécifie le nombre de chiffres après le point.

n

Pointeur vers un entier

Nombre de caractères qui sont correctement écrits jusqu'à présent au flux de données ou à la mémoire tampon. Cette valeur est stockée dans l'entier dont l'adresse est fournie comme argument. Consultez la remarque de sécurité plus loin dans cet article.

p

Type de pointeur

Affiche l'argument comme une adresse dans des chiffres hexadécimaux.

s

String

Lorsqu'elle est utilisée avec des fonctions printf, spécifie une chaîne de caractères codés sur un octet ou multioctets ; en cas d'utilisation avec des fonctions wprintf, spécifie une chaîne de caractères larges. Les caractères sont affichés jusqu'au premier caractère NULL ou jusqu'à ce que precision la valeur soit atteinte.

S

String

Lorsqu'elle est utilisée avec des fonctions printf, spécifie une chaîne de caractères larges ; en cas d'utilisation avec des fonctions wprintf, spécifie une chaîne de caractères codés sur un octet ou multioctets. Les caractères sont affichés jusqu'au premier caractère NULL ou jusqu'à ce que precision la valeur soit atteinte.

Z

structure ANSI_STRING or UNICODE_STRING

Lorsque l'adresse d'une structure ANSI_STRING ou UNICODE_STRING est passée comme argument, affiche la chaîne contenue dans la mémoire tampon qui est désignée par le champ d' Buffer de la structure. Utilisez un préfixe modificateur de longueur de w pour spécifier un argument UNICODE_STRING par l'exemple, %wZ. Le champ Length de la structure doit avoir la longueur, en octets, de la chaîne. Le champ MaximumLength de la structure doit avoir la longueur, en octets, de la mémoire tampon.

En général, le caractère du type Z est utilisé uniquement dans les fonctions de débogage de pilote qui utilisent une spécification de format, par exemple dbgPrint et kdPrint.

Si l'argument correspondant à un spécificateur de conversion à virgule flottante est infini, indéfini, ou NAN ( pas un nombre), le tableau suivant répertorie le résultat mis en forme.

Valeur

Sortie

+ infinity

1.#INFaléatoire- données

– infinity

–1.#INFaléatoire- données

Indéfini (comme un NaN muet)

digit.#INDrandom- données

NaN

digit.#NANrandom- données

Notes

Si le champ Buffer de l'argument correspondant à %Z, ou de l'argument correspondant à %s ou à %S, est un pointeur null, « (null) » s'affiche.

Notes

Dans tous les formats exponentiels, le nombre par défaut de chiffres dans l'exposant à afficher est trois.À l'aide de la fonction _set_output_format, vous pouvez définir le nombre de chiffres affichés à deux mais augmenter à trois si exigé par la taille de l'exposant.

Note de sécuritéNote de sécurité

Comme le format %n est intrinsèquement non sécurisé, il est désactivé par défaut.Si %n est produit dans une chaîne de format, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre.Pour permettre la prise en charge de %n, consultez _set_printf_count_output.

Voir aussi

Référence

printf, _printf_l, wprintf, _wprintf_l

Syntaxe de spécification de format : fonctions printf et wprintf

Directives de balise

Spécification de largeur printf

Spécifications de précision

Spécification de taille

_set_output_format