Que signifie le spécificateur de format %*s?

Dans le code que je dois maintenir, j'ai vu un spécificateur de format %*s . Quelqu'un peut-il me dire ce que c'est et pourquoi est-il utilisé?

un exemple de son usage est comme:

fprintf(outFile, "n%*s", indent, "");
35
demandé sur Jonathan Leffler 2009-06-16 14:00:41

5 réponses

il est utilisé pour spécifier, de manière dynamique, quelle est la largeur du champ:

  • la largeur n'est pas spécifiée dans la chaîne de format, mais en tant que argument de valeur entière précédant le l'argument qui doit être formaté.

ainsi "indent" spécifie combien d'espace attribuer pour la chaîne qui la suit dans la liste des paramètres.

Donc,

printf("%*s", 5, "");

est la même

printf("%5s", "");

c'est une bonne façon de mettre des espaces dans votre fichier, en évitant une boucle.

46
répondu akappa 2009-06-16 10:23:35

N'utilisez pas" %*s "sur un tampon qui n'est pas NULL terminé (empaqueté) en pensant qu'il n'imprimera que le champ" Longueur".

8
répondu user2132064 2013-09-19 15:24:40

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

la largeur n'est pas spécifiée dans la chaîne de format, mais comme argument de valeur entier supplémentaire précédant l'argument qui doit être formaté.

printf("%*s", 4, myValue); vaut printf("%4s", myValue);.

1
répondu pauldoo 2009-06-16 10:08:45

* provoque fprintf à pad la sortie jusqu'à ce qu'elle soit large de n Caractères, où n est une valeur entière stockée dans l'argument de la fonction juste avant celle représentée par le type modifié.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
0
répondu jitter 2009-06-16 10:07:26

le spécificateur de format %4s affiche une chaîne de caractères d'une largeur de champ de 4-c'est-à-dire que printf affiche la valeur avec au moins 4 positions de caractères.

si la valeur à afficher est less que 4 positions de caractère larges, la valeur est right justified dans le champ par défaut.

Si la valeur est greater que 4 positions de caractère large, la largeur de champ expands pour accommoder le nombre approprié de caractères.

pour justifier à gauche la valeur, utilisez un négatif entier pour spécifier la largeur de champ.

Références: Java™ Comment Le Programme (Début Objets), La Dixième Édition

0
répondu Basheer AL-MOMANI 2017-02-14 11:21:48