4

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

假设我从用户那里得到了几个 int 值,并且我知道第一个值是最大的。在打印其余数字时,我可以使用第一个 int 值的长度作为填充吗?

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

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

使用 5 的填充打印将如下所示:

printf("%5d", n);

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

谢谢!

4

2 回答 2

8

这样做:

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

用作作为参数传递给 的宽度*占位符。printf()

于 2013-05-21T07:48:53.257 回答
0

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

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

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

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

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

于 2013-05-21T07:47:53.670 回答