如何将参数n传递给printf(“%nd”,some_int);

时间:2011-07-31 06:38:24

标签: c linux format

我们都知道在基于C语言中, printf(“%11d”,some_int); 意味着在11个字符的字段内右对齐,但是如果我想在这里替换此常量11一个动态变量,我该怎么做?

4 个答案:

答案 0 :(得分:18)

您可以使用*字符在其自己的参数中指定字段宽度:

printf("%*d", some_width, some_int);

答案 1 :(得分:6)

您将阅读printf(3)手册页并遇到以下内容:

  

代替十进制数字字符串,可以写“*”或“* m $”(对于某些十进​​制整数          m)指定字段宽度在下一个参数中给出,或者在          第m个参数,必须是int类型。

答案 2 :(得分:2)

使用linux命令:“man 3 printf”获取更多信息。 一种方法是

 printf("%*d", width, num);

其中width是precision,num是print的参数。 与上述相同的其他方式是

 printf("%2$*1$d", width, num);

更一般地,这被写为“* m $ d”,其中m是int和参数号。

答案 3 :(得分:0)

这样做的一种方法是在字符数组缓冲区上使用snprintf等效项,以便创建printf格式字符串。 (当然,请务必检查缓冲区溢出。)