有没有办法打印一定数量的空白字符?
我不能用min.宽度空白填充"\"%-5s\"",因为它会导致"str "...,我需要输出"str" ...
我知道我可以做一个愚蠢的方式:
int len = strlen (str);
printf ("/"%s/"", str);
for (int i = len - 5; i > 0; i--)
printf (" ");
Run Code Online (Sandbox Code Playgroud)
但我会感谢更有效的解决方法.
尝试
printf ( "%*c\"%s\"%*c", leading, ' ', str, trailing, ' ');
Run Code Online (Sandbox Code Playgroud)
前导和尾随是int.
仅用于尾随使用
printf ( "\"%s\"%*c", str, trailing, ' ');
Run Code Online (Sandbox Code Playgroud)
可以仅针对前导进行类似的修改
编辑
宽度说明符允许使用星号来提供可变宽度.
在这种情况下,%*c告诉printf获取下一个参数并将其用作字符的宽度.
它最初读取前导并将其用于打印字符的字段宽度,即空格字符.然后打印一个引号,".%s格式打印下一个参数str.打印另一个引号然后再次%*c读取尾随作为打印下一个参数的字段的宽度,另一个空格字符.