J'ai une question factice. Je voudrais imprimer un entier dans un tampon avec 0 mais je ne peux pas le trier le sprintf
format. J'essaye ce qui suit
char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );
en espérant avoir la chaîne suivante
"000000000000000000000000000324"
qu'est-ce que je fais mal? Cela ne signifie pas un pad avec 0 pour une largeur maximale de 30 caractères?
"%030d"
est le droïde que vous recherchez
Vous avez obtenu une syntaxe légèrement erronée; Le code suivant produit la sortie souhaitée:
char buf[31];
int my_val = 324;
sprintf( buf, "%030d", (int)my_val );
De Article de Wikipedia sur Printf :
[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03".
Le rembourrage et la largeur viennent avant le spécificateur de type:
sprintf( buf, "%030d", my_val );
Essayer:
sprintf( buf, "%030d", my_val );
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 drapeaux le font. Donc, si vous voulez un "+" précédent pour les nombres positifs, utilisez "% + d".
C'est %030d
, avec une lettre de type à la fin.