在 printf 中设置可变文本列宽度

发布于 2024-11-30 08:27:42 字数 236 浏览 1 评论 0原文

为了确定 C 语言中列的大小,我们使用 %d。 例如,我可以输入 %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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掩于岁月 2024-12-07 08:27:42

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

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

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

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

请注意,widthprecision 都必须具有 int 类型,如 printf* 参数,类型 size_t 是不合适的,因为它在目标平台上可能具有不同的大小和表示形式。

You can do this as follows:

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

From Lee's comment:
You can also use a * for the precision:

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

Note that both width and precision must have type int as expected by printf for the * arguments, type size_t is inappropriate as it may have a different size and representation on the target platform.

灼疼热情 2024-12-07 08:27:42

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

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

例如,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:

A field width or precision, or both, may be indicated by an asterisk ‘∗’ or an asterisk followed by one or more decimal digits and a ‘$’ instead of a digit string. In this case, an int argument supplies the field width or precision. A negative field width is treated as a left adjustment flag followed by a positive field width; a negative precision is treated as though it were missing. If a single format directive mixes positional (nn$) and non-positional arguments, the results are undefined.

E.g., printf ( "%1$*d", width, value );

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文