在我必须维护的一些代码中,我看到了格式说明符 %*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个字符位置宽,则字段宽度扩展以容纳适当数量的字符。

要左对齐该值,请使用负整数指定字段宽度。

参考文献: Java™如何编程(早期对象),第十版

*使fprintf填充输出,直到它是n个字符宽,其中n是存储在函数参数中的整数值,紧接在修改类型表示的前面。

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top