繁体   English   中英

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

[英]What does the %*s format specifier mean?

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

它的用法示例如下:

fprintf(outFile, "\n%*s", indent, "");

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

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

所以“缩进”指定在参数列表中为它后面的字符串分配多少空间。

所以,

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

是相同的

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

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

不要在不是 NULL 终止(打包)的缓冲区上使用“%*s”,认为它只会打印“长度”字段。

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

如果 output 的值less 4 个字符位置宽,默认情况下该值在字段中right justified

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

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

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

在 printf 和 fprintf 中使用时:

printf("%*s", 4, myValue); is equivalent to printf("%4s", myValue);

它显示具有最小宽度的变量,rest 个右对齐空格。 要左对齐该值,请使用负数 integer。

在 scanf 和 sscanf 中使用时:

/* sscanf example */
#include <stdio.h>

int main ()
{
  char sentence []="Rudolph is 12 years old";
  char str [20];
  int i;

  sscanf (sentence,"%s %*s %d",str,&i);
  printf ("%s -> %d\n",str,i);
  
  return 0;
}

Output:

Rudolph -> 12

它用于忽略字符串。

* 使 fprintf 填充 output 直到它有 n 个字符宽,其中 n 是存储在 function 参数中的 integer 值,就在修改后的类型所代表的参数之前。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM