6
votes

Padding Printf pour cordes de 0

Y a-t-il un moyen de remplacer le caractère d'espace à 0 dans le remplissage de PrintF pour la largeur de champ

code utilisé xxx

ne semble pas fonctionner pour les chaînes!


2 commentaires

Vous voulez dire rembourrage dans printf , pas scanf , n'est-ce pas?


Techniquement, le modificateur 0 dit "pour d'autres conversions ( pas numériques, par exemple% s ), le comportement n'est pas défini." Je crois que les anciennes versions de HPUX (et peut-être d'autres systèmes System V) feraient cela pour (ou contre) vous, où Linux et BSD ne ...


3 Réponses :


9
votes

En effet, le drapeau 0 ne fonctionne que pour les conversions numériques. Vous devrez faire cela à la main: xxx


2 commentaires

Une version avec moins de dactylographie: printf ("%. * S% s", n> = 10? 0: (int) (10-N), "0000000000", S);


Cela aide vraiment. Merci Zwol.



-1
votes

Essayez ceci:

printf("%010d%s", 0, "this");


1 commentaires

Qui imprimera 0000000000 puis la chaîne; OP voulait un total de 10 caractères



3
votes

Qu'en est-il de

 ~:11111ABCD


1 commentaires

Sympa, mais ça n'est pas c