gpt4 book ai didi

c - printf 中的空格填充不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:53 26 4
gpt4 key购买 nike

我需要在我的字符串之前添加可变空间填充。这是代码:

unsigned int spaces = result % 16;
printf("spaces=%d\n", spaces); // spaces=12, for example.
printf("% *s\n", spaces, my_string);

它根本不起作用 - 没有添加空格,我在 gcc 中收到以下警告:

警告:“”标志与“%s” gnu_printf 格式一起使用 [-Wformat=]

如何解决?有什么解决方法吗?

最佳答案

改变这个

printf("% *s\n", spaces, my_string);

对此

printf("%*s%s\n", spaces, " ", my_string);

这应该会消除警告并产生预期的效果。

[编辑]

我现在看到您已经找到了答案。 alexis 说的也是正确的,会产生同样的效果。亚历克西斯的版本更清晰,我想说,所以我将此作为解决方案提供,但功劳归于他。

你也可以这样做:

int width = 5;
printf ("%*d%*d\n", width, 10, width, 12);

这将打印:

10 12

Source

所以,如果你考虑一下,你可以这样做:

printf("%*s\n", spaces, "foo");


为什么 Alexis 的版​​本与您在评论中的版本同义?

因为编译器将两个顺序字符串(即中间有一个空格)连接成一个。

此操作称为字符串文字连接。在 Wikipedia 中阅读更多内容.

关于c - printf 中的空格填充不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com