我很确定没有办法做到这一点,但我想知道,所以这里......
假设我从用户那里得到了几个 int 值,并且我知道第一个值是最大的。在打印其余数字时,我可以使用第一个 int 值的长度作为填充吗?
浏览论坛我发现您可以像这样确定 int (n) 的长度:
l = (int) log10(n) + 1;
使用 5 的填充打印将如下所示:
printf("%5d", n);
所以我想知道是否有办法使用 l 而不是 5 ...
谢谢!
我很确定没有办法做到这一点,但我想知道,所以这里......
假设我从用户那里得到了几个 int 值,并且我知道第一个值是最大的。在打印其余数字时,我可以使用第一个 int 值的长度作为填充吗?
浏览论坛我发现您可以像这样确定 int (n) 的长度:
l = (int) log10(n) + 1;
使用 5 的填充打印将如下所示:
printf("%5d", n);
所以我想知道是否有办法使用 l 而不是 5 ...
谢谢!
这样做:
int n = <some value>;
int i = (int) log10(n) + 1;
printf("%*d", i, n);
用作作为参数传递给 的宽度的*
占位符。printf()
您还可以使用snprintf()
来获取为一个值打印的字符数,因此:
char buff[100];
int width = snprintf (buff, sizeof(buff), "%d", number1);
但是,无论您获得所需的宽度,您都可以使用*
格式修饰符:
printf( "%*d %*d\n", width, number1, width, number2);
该修饰符使用下一个参数来指定动态宽度,而不是格式字符串中的固定宽度。