题
在我必须维护的一些代码中,我看到了格式说明符 %*s
。谁能告诉我这是什么以及为什么使用它?
其用法示例如下:
fprintf(outFile, "\n%*s", indent, "");
解决方案
- 宽度不在格式字符串中指定,而是作为额外的 前面的整数值参数 必须格式化的参数。
因此“缩进”指定为参数列表中紧随其后的字符串分配多少空间。
所以,
printf("%*s", 5, "");
是相同的
printf("%5s", "");
这是在文件中放置一些空格以避免循环的好方法。
其他提示
请勿使用“%* s”在一个非NULL终止(打包)的缓冲区上,认为它只会打印“length”。字段。
http://www.cplusplus.com/reference/clibrary/cstdio/的printf /
宽度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。
例如: printf("%* s",4,myValue);
等同于 printf("%4s",myValue);
。
格式说明符%4s输出字段宽度为4&#8212的字符串;也就是说,printf显示至少包含4个字符位置的值。
如果要输出的值是 less
而不是4个字符位置宽,则默认情况下该字段中的值为右对齐
。
如果值 greater
超过4个字符位置宽,则字段宽度扩展
以容纳适当数量的字符。
要左对齐该值,请使用负整数指定字段宽度。
*使fprintf填充输出,直到它是n个字符宽,其中n是存储在函数参数中的整数值,紧接在修改类型表示的前面。
printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
不隶属于 StackOverflow