在 printf 中设置可变文本列宽度
为了确定 C 语言中列的大小,我们使用 %
。 例如,我可以输入 %3d
,它会给我一个 width=3 的列。 我的问题是 %
之后的数字是我收到的变量,所以我需要类似 %xd
的东西(其中 x
是整数我之前在程序中收到的变量)。 但这不起作用。
还有其他方法可以做到这一点吗?
In order to determine the size of the column in C language we use %<number>d
.
For instance, I can type %3d
and it will give me a column of width=3.
My problem is that my number after the %
is a variable that I receive, so I need something like %xd
(where x
is the integer variable I received sometime before in my program).
But it's not working.
Is there any other way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以按如下方式执行此操作:
来自 Lee 的评论:
您还可以使用 * 表示精度:
请注意,
width
和precision
都必须具有int
类型,如printf*
参数,类型size_t
是不合适的,因为它在目标平台上可能具有不同的大小和表示形式。You can do this as follows:
From Lee's comment:
You can also use a * for the precision:
Note that both
width
andprecision
must have typeint
as expected byprintf
for the*
arguments, typesize_t
is inappropriate as it may have a different size and representation on the target platform.只是为了完整起见,想提一下与 POSIX 兼容的版本
printf( )
您还可以将实际字段宽度(或精度)值放在参数列表中的其他位置,并使用从 1 开始的参数编号后跟美元符号来引用它:例如,
printf("%1$*d", 宽度, 值);
Just for completeness, wanted to mention that with POSIX-compliant versions of
printf()
you can also put the actual field width (or precision) value somewhere else in the parameter list and refer to it using the 1-based parameter number followed by a dollar sign:E.g.,
printf ( "%1$*d", width, value );