c - %* s格式说明符是什么意思?

Translate

在一些我必须维护的代码中,我看到了格式说明符%*s。谁能告诉我这是什么以及为什么使用它?

其用法示例如下:

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

所有的回答

Translate

用于动态指定字段的宽度:

  • 宽度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。

因此“缩进”指定在参数列表中为其后的字符串分配多少空间。

所以,

printf("%*s", 5, "");

是相同的

printf("%5s", "");

这是在文件中放置一些空格以避免循环的好方法。

来源
Translate

不要在没有NULL终止(打包)的缓冲区上使用“%* s”,以为它只会打印“ length”字段。

来源
Translate

格式说明符%4s输出的字符串的字段宽度为4,即printf显示的值至少具有4个字符位置。

如果要输出的值是less大于4个字符的位置,值为right justified默认情况下在字段中。

如果值为greater大于4个字符的位置,字段宽度expands容纳适当数量的字符。

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

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

来源
Translate

*导致fprintf填充输出,直到输出宽度为n个字符为止,其中n是存储在a函数参数中的整数值,该参数正好位于由修改的类型表示的那个参数之前。

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
来源
Translate

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

宽度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。

例如:printf("%*s", 4, myValue);等于printf("%4s", myValue);.

来源
Leave a Reply
You must be logged in to post a answer.
关于作者