打印n个空格字符-(f)printf格式

6

有没有办法打印出一定数量的空格字符?

我不能使用最小宽度的空格填充"\"%-5s\"",因为这会导致"str "...,而我需要输出"str" ...

我知道我可以愚蠢地做:

int len = strlen (str);

printf ("/"%s/"", str);
for (int i = len - 5; i > 0; i--)
   printf (" ");

但我希望有更加有效的解决方法。


1
正是我所需要的!非常感谢。 - notnull
1个回答

11

请尝试

printf ( "%*c\"%s\"%*c", leading, ' ', str, trailing, ' ');

leading和trailing都是int类型。
只需要针对trailing使用

printf ( "\"%s\"%*c", str, trailing, ' ');

类似的修改也可以仅针对前导部分进行。

编辑
宽度说明符允许使用星号提供可变宽度。
在这种情况下,%*c告诉printf获取下一个参数并将其用作字符的宽度。
它最初读取前导部分,并将其用于打印字符(空格字符)的字段的宽度。然后打印引号\"。%s格式打印下一个参数,str。再次打印引号,然后%*c读取trailing作为打印下一个参数(另一个空格字符)的字段的宽度。


能够解释一下这是如何工作的吗?我现在只是盯着一堆随机字符。 - Darkhogg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接