2014-10-11 1341 views
6

是否有任何方法可以打印一定数量的空白字符?打印n个空格字符 - (f)printf格式

我无法使用分钟。宽度的空白填充"\"%-5s\"",因为它会导致对"str "...,我需要输出"str" ...

我知道我能做到一个愚蠢的方法:

int len = strlen (str); 

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

但是我会很感激更有效的解决方法。

+1

正是我需要的!太谢谢你了。 请,出任答案。 – notnull 2014-10-11 10:44:39

回答

9

尝试

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

哪里开头和结尾是int类型。
对于仅使用尾随

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

类似的修饰可用于引导仅

EDIT
的宽度说明允许使用一个星号,以提供可变宽度制成。
在这种情况下,%* c告诉printf获取下一个参数并将其用作字符的宽度。
它最初读取前导,并将其用于打印字符的字段的宽度,即空格字符。然后打印一个报价,“%s”格式打印下一个参数str,打印另一个报价,然后%c读取尾部作为打印下一个参数的字段的宽度,即另一个空格字符。

+0

上如何工作将是很好的解释,我只是在随机字符盯着现在 – Darkhogg 2014-10-11 11:44:03

+0

。是的,谢谢! – Darkhogg 2014-10-11 12:21:49