使用用户确定的填充打印int值?

时间:2013-05-21 07:45:02

标签: c formatting printf padding precision

我很确定没有办法做到这一点,但我很想知道,所以这里......

假设我从用户那里得到了几个int值,而且我知道第一个这样的事实 价值是最大的。 任何方式我都可以使用第一个int值的长度作为打印时的填充 其余的数字?

浏览论坛我发现你可以确定int(n)的长度 这样:

l = (int) log10(n) + 1;

使用5的填充打印看起来像:

printf("%5d", n);

所以我想知道的是,是否有办法使用l而不是5 ...

谢谢!

2 个答案:

答案 0 :(得分:8)

这样做:

int n = <some value>;
int i = (int) log10(n) + 1;
printf("%*d", i, n);

*充当 width 的占位符,作为参数传递给printf()

答案 1 :(得分:0)

您还可以使用snprintf()来获取为某个值打印的字符数:

char buff[100];
int width = snprintf (buff, sizeof(buff), "%d", number1);

但是,无论您获得所需的宽度,都可以使用*格式修饰符:

printf( "%*d %*d\n", width, number1, width, number2);

该修饰符使用下一个参数指定动态宽度,而不是格式字符串中固定的宽度。