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

kan*_*eki 4 c precision formatting printf padding

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

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

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

l = (int) log10(n) + 1;
Run Code Online (Sandbox Code Playgroud)

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

printf("%5d", n);
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

alk*_*alk 8

这样做:

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

在*用作用于占位符宽度作为参数来传递printf().