在printf中设置变量文本列宽

时间:2011-08-18 10:21:57

标签: c size printf

为了用C语言确定列的大小,我们使用%<number>d。 例如,我可以输入%3d,它会给我一个width = 3的列。 我的问题是我%之后的数字是我收到的变量,所以我需要%xd之类的东西(其中x是我之前在程序中收到的整数变量)。 但它不起作用。

还有其他办法吗?

2 个答案:

答案 0 :(得分:85)

您可以按照以下方式执行此操作:

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

来自Lee的评论:
您还可以使用*作为精度大小:

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

答案 1 :(得分:7)

为了完整起见,想要提及符合POSIX标准的printf()版本,您还可以将实际字段宽度(或精度)值放在参数列表中的其他位置,并使用基于1的方式引用它参数编号后跟一个美元符号:

  

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

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