Yes, if you use *
in your format string, it gets a number from the arguments:
printf ("%0*d
", 3, 5);
will print "005".
Keep in mind you can only pad with spaces or zeros. If you want to pad with something else, you can use something like:
#include <stdio.h>
#include <string.h>
int main (void) {
char *s = "MyText";
unsigned int sz = 9;
char *pad = "########################################";
printf ("%.*s%s
", (sz < strlen(s)) ? 0 : sz - strlen(s), pad, s);
}
This outputs ###MyText
when sz
is 9, or MyText
when sz
is 2 (no padding but no truncation). You may want to add a check for pad
being too short.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…