Да, если вы используете *
в строке формата, он получает число из аргументов:
printf ("%0*d\n", 3, 5);
выведет «005».
Имейте в виду, что вы можететолько блок с пробелами или нулями.Если вы хотите дополнить что-то еще, вы можете использовать что-то вроде:
#include <stdio.h>
#include <string.h>
int main (void) {
char *s = "MyText";
unsigned int sz = 9;
char *pad = "########################################";
printf ("%.*s%s\n", (sz < strlen(s)) ? 0 : sz - strlen(s), pad, s);
}
Это выводит ###MyText
, когда sz
равно 9, или MyText
, когда sz
равно 2 (без заполнения, нобез усечения).Вы можете добавить чек на pad
слишком короткий.