在printf中设置变量文本列宽

Ala*_* M. 52 c size printf

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

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

Oli*_*rth 92

你可以这样做:

printf("%*d", width, value);
Run Code Online (Sandbox Code Playgroud)

来自Lee的评论:
您还可以使用*来表示精确尺寸:

printf("%*.*f", width, precision, value);
Run Code Online (Sandbox Code Playgroud)


jet*_*set 7

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

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

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