Spécificateurs de format dans C/C++

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Référence C++

Les spécificateurs de format sont utilisés dans de nombreuses fonctions C et dans la RTL pour des classes comme UnicodeString.

Les chaînes de format contiennent deux types d'objets : les caractères bruts et les spécificateurs de format. Les caractères bruts sont copiés tels quels dans la chaîne résultante. Les spécificateurs de format récupèrent les arguments dans la liste des arguments en y appliquant un format.

Remarque : Voir scanf Format Specifiers et printf Format Specifiers.

Types de format d'exécution C :

Spécificateur Signification

d, i

Décimal ou entier. L'argument doit être une valeur entière. La valeur est convertie en une chaîne de chiffres décimaux. Si la chaîne de format contient un spécificateur de précision, la chaîne résultante doit contenir au moins le nombre indiqué de chiffres ; si cela n’est pas le cas, des caractères zéro de remplissage sont rajoutés dans la partie gauche de la chaîne.

u

Entier non signé. Similaire à "d" et "i", mais n'a pas de signe.

o

Octal. L'argument doit être une valeur entière. La valeur est convertie en une chaîne de chiffres octaux. Si la chaîne de format contient un spécificateur de précision, la chaîne résultante doit contenir au moins le nombre indiqué de chiffres ; si cela n’est pas le cas, des caractères zéro de remplissage sont rajoutés dans la partie gauche de la chaîne.

x,X

Hexadécimal. L'argument doit être une valeur entière. La valeur est convertie en une chaîne de chiffres décimaux. Si la chaîne de format contient un spécificateur de précision, la chaîne résultante doit contenir au moins le nombre indiqué de chiffres ; si cela n’est pas le cas, des caractères zéro de remplissage sont rajoutés dans la partie gauche de la chaîne.

f

Virgule flottante. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne de la forme "-ddd.ddd...". La chaîne résultante débute par un signe moins si le nombre est négatif. Le nombre de chiffres après la virgule est fourni par le spécificateur de précision de la chaîne de format ; 2 décimales sont prises en compte par défaut si le spécificateur de précision est omis.

e

Scientifique. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne de la forme "-d.ddd...E+ddd". La chaîne résultante débute par un signe moins si le nombre est négatif. Un chiffre précède toujours le séparateur décimal. Le nombre total de chiffres dans la chaîne résultante (y compris celui qui précède le séparateur décimal) est donné par le spécificateur de précision dans la chaîne de format. Si celui-ci est omis, une précision de 15 est prise en compte par défaut. Le caractère "E" dans la chaîne résultante est toujours suivi d'un signe plus ou moins, puis de 3 chiffres au moins.

g

Double. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne décimale la plus courte possible en utilisant le format fixe ou scientifique. Le nombre de chiffres significatifs dans la chaîne résultante est fourni par le spécificateur de précision dans la chaîne de format. Une précision par défaut de 15 est prise en compte si le spécificateur de précision est omis. Les caractères zéro sont supprimés de la fin de la chaîne résultante et la virgule décimale n'apparaît que si elle est nécessaire. La chaîne résultante utilise le format fixe si le nombre de chiffres à gauche de la virgule est inférieur ou égal à la précision indiquée et si la valeur est supérieure ou égale à 0,00001. Sinon, la chaîne résultante fait appel au format scientifique.

c

Caractère. L'argument doit être une valeur caractère unique.

s

Chaîne. L'argument doit être un caractère, une chaîne ou une valeur char*. La chaîne ou le caractère est inséré à la place du spécificateur de format. Le spécificateur de précision, s'il est défini dans la chaîne de format, indique la taille maximale de la chaîne résultante. Si l'argument est une chaîne de taille supérieure, celle-ci est tronquée.

n

Pointeur sur un entier. Stocke (à l'emplacement pointé par l'argument input) un nombre de caractères déjà écrits.

p

Pointeur. Imprime l'argument input en tant que pointeur ; le format dépend du modèle de mémoire utilisé. Il peut être XXXX:YYYY ou YYYY (offset seulement).

Remarque : Le préfixe "l" est utilisé pour les versions longues de leurs types de données respectifs ; "h" est utilisé pour les versions courtes. Ils peuvent être appliqués aux spécificateurs "d", "i", "u", "o', "x", "f" et "g".

Par exemple, l'utilisation de "%lf" au lieu de "%f" nécessite que vous passiez une valeur double pour son paramètre respectif, au lieu d'une valeur float.

Les exemples suivants utilisent les fonctions printf et wprintf, comme suit :

entier/décimal :

 printf("%d\n", -5); //-5
 printf("%i\n", -5); //-5

non signé :

 printf("%u\n", 5); //5

octal :

 printf("%o\n", 9); //11

hexadécimal minuscule et majuscule :

 printf("%x\n", 15); //f
 printf("%X\n", 15); //F

flottant et flottant long :

 printf("%%f is : %f\n", 1.0/3.0); //0.333333
 printf("%%lf is : %lf\n", 5000000000000000.0/2.3); //A big number

scientifique :

 printf("%e\n", 5.5); //5.500000e+00

double :

 printf("%g\n", 1.0/3.0); //0.333333

spécificateurs de largeur et de précision :

 printf("%f\n", 1.0/3.0); //0.333333
 printf("%-5.1f\n", 1.0/3.0); //0.3
 printf("%5.1f\n", 1.0/3.0);  //  0.3--Two white spaces at the start

caractère et chaîne :

 printf("%c",'a');
 printf("%s","string");

chaînes étendues :

 wprintf(L"%s", L"string");

Voir aussi