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

Aam*_*mir 44 c printf format-specifiers

在我必须维护的一些代码中,我看到了一个格式说明符%*s.任何人都可以告诉我这是什么以及为什么使用它?

它的用法示例如下:

fprintf(outFile, "\n%*s", indent, "");
Run Code Online (Sandbox Code Playgroud)

aka*_*ppa 52

它用于以动态方式指定字段的宽度:

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

所以"indent"指定在参数列表中为其后面的字符串分配多少空间.

所以,

printf("%*s", 5, "");
Run Code Online (Sandbox Code Playgroud)

是相同的

printf("%5s", "");
Run Code Online (Sandbox Code Playgroud)

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

  • @EthanHeilman,*表示scanf系列函数中完全不同的东西. (4认同)

小智 9

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

  • 使用"%.*s"来实现这一目标! (20认同)
  • @powersource97,“%.*s”表示您正在从参数中读取“精度”值,精度是要打印的最大字符数,“%*s”表示您正在从参数中读取“宽度”值参数,这是要打印的最小操作系统字符数。 (4认同)

Bas*_*ANI 5

格式说明符 %4s 输出字段宽度为 4\xe2\x80\x94 的字符串,即 printf 显示至少包含 4 个字符位置的值。

\n\n

如果要输出的值的less宽度小于 4 个字符位置,则默认情况下该值right justified位于该字段中。

\n\n

如果该值greater比 4 个字符位置宽,则字段宽度expands可以容纳适当的字符数。

\n\n

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

\n\n

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

\n