为了用C语言确定列的大小,我们使用%<number>d
。
例如,我可以输入%3d
,它会给我一个width = 3的列。
我的问题是我%
之后的数字是我收到的变量,所以我需要%xd
之类的东西(其中x
是我之前在程序中收到的整数变量)。
但它不起作用。
还有其他办法吗?
答案 0 :(得分:85)
您可以按照以下方式执行此操作:
printf("%*d", width, value);
来自Lee的评论:
您还可以使用*作为精度大小:
printf("%*.*f", width, precision, value);
答案 1 :(得分:7)
为了完整起见,想要提及符合POSIX标准的printf()
版本,您还可以将实际字段宽度(或精度)值放在参数列表中的其他位置,并使用基于1的方式引用它参数编号后跟一个美元符号:
字段宽度或精度或两者可以用星号'*'或星号后跟一个或多个十进制数字和'$'而不是数字字符串表示。在这种情况下,int参数提供字段宽度或精度。负场宽度被视为左调整标志,后面是正字段宽度;否定精度被视为缺失。如果单个格式指令混合了位置(nn $)和非位置参数,则结果是未定义的。
,例如printf ( "%1$*d", width, value );