在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 );