我们都知道在基于C语言中, printf(“%11d”,some_int); 意味着在11个字符的字段内右对齐,但是如果我想在这里替换此常量11一个动态变量,我该怎么做?
答案 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格式字符串。 (当然,请务必检查缓冲区溢出。)