rembourrage avec sprintf
J'ai une question factice. Je voudrais imprimer un entier dans un tampon avec 0 mais je ne peux pas le trier au format sprintf
.
J'essaie ce qui suit
char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );
Espérant avoir la chaîne suivante
"000000000000000000000000000324"
Qu'est-ce que je fais de mal? Cela ne signifie pas pad avec 0 pour une largeur maximale de 30 caractères?
28
demandé sur
jwueller
2011-05-25 01:16:18
6 réponses
Le remplissage et la largeur viennent avant le spécificateur de type:
sprintf( buf, "%030d", my_val );
7
répondu
Nick Meyer
2011-05-24 21:19:00
Vous avez la syntaxe légèrement fausse; le code suivant produit la sortie souhaitée:
char buf[31];
int my_val = 324;
sprintf( buf, "%030d", (int)my_val );
De L'Article de Wikipedia sur Printf :
[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03".
6
répondu
Sreerac
2011-05-24 21:30:36
Vos paramètres de précision et de largeur doivent aller entre le ' % 'et le spécificateur de conversion 'd', Pas après. En fait, tous les indicateurs. Donc, si vous voulez un précédent '+' pour les nombres positifs, utiliser '%+d'.
2
répondu
jbruni
2011-05-24 21:21:39