带N个前导零的C printf

带N个前导零的C printf,c,printf,C,Printf,我知道如果N是常数并且我知道它,我可以使用printf(%Nd,foo) 但问题是N是变量,在程序中计算 我可以将sprintf和printf结合起来: sprintf(formatstr, "%%%dd", N); printf(formatstr, foo); 但是有没有更干净的方法呢?你可以用一个*来代替字段宽度。这意味着下一个参数将指定宽度: printf("%0*d", size, foo); 您可以用*代替字段宽度。这意味着下一个参数将指定宽度: printf("%0*d", s

我知道如果N是常数并且我知道它,我可以使用
printf(%Nd,foo)
但问题是N是变量,在程序中计算

我可以将
sprintf
printf
结合起来:

sprintf(formatstr, "%%%dd", N);
printf(formatstr, foo);

但是有没有更干净的方法呢?

你可以用一个
*
来代替字段宽度。这意味着下一个参数将指定宽度:

printf("%0*d", size, foo);

您可以用
*
代替字段宽度。这意味着下一个参数将指定宽度:

printf("%0*d", size, foo);