我很确定没有办法做到这一点,但我很想知道,所以这里......
假设我从用户那里得到了几个int值,而且我知道第一个这样的事实 价值是最大的。 任何方式我都可以使用第一个int值的长度作为打印时的填充 其余的数字?
浏览论坛我发现你可以确定int(n)的长度 这样:
l = (int) log10(n) + 1;
使用5的填充打印看起来像:
printf("%5d", n);
所以我想知道的是,是否有办法使用l而不是5 ...
谢谢!
答案 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);
该修饰符使用下一个参数指定动态宽度,而不是格式字符串中固定的宽度。