在printf中设置可变的文本列宽

为了确定C语言中列的大小,我们使用%<number>d 。 例如,我可以input%3d ,它会给我一个宽度为3的列。 我的问题是,我的数字%是一个variables,我收到,所以我需要像%xd (其中x是我的程序之前收到的整数variables)。 但它不工作。

有没有其他方法可以做到这一点?

你可以这样做,如下所示:

 printf("%*d", width, value); 

从李的评论:
您也可以使用*作为精度大小:

 printf("%*.*f", width, precision, value); 

为了完整性,想要提到的是,在POSIX兼容版本的printf()还可以将实际字段宽度(或精度)值放在参数列表中的其他位置,并使用基于1的参数号引用它美元符号:

字段宽度或精度(或两者)可以用星号“*”或星号表示,后跟一个或多个十进制数字,用“$”而不是数字string表示。 在这种情况下,int参数提供了字段宽度或精度。 负字段宽度被视为左调整标志,后跟正字段宽度; 一个负的精度被视为缺失。 如果单个格式指令混合位置(nn $)和非位置参数,则结果是不确定的。

例如, printf ( "%1$*d", width, value );

Interesting Posts