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, "");
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.
N'utilisez pas" %*s "sur un tampon qui n'est pas NULL terminé (empaqueté) en pensant qu'il n'imprimera que le champ" Longueur".
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
printf("%*s", 4, myValue); vautla 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("%4s", myValue);
.
* 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.
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