【C语言】printf的格式化指令

2023年7月23日,周日上午:


遇到的问题

今天早上看Linux编程方面的书籍时,遇到了类似下面的代码,把我给整蒙了

“%.*s”是啥???怎么后面还能跟两个参数呢???

int n = 5;
char line[] = "Hello, World!";
printf("%.*s", n, line);

常见的格式化指令

  • %d:用于打印有符号的十进制整数。
  • %u:用于打印无符号的十进制整数。
  • %f:用于打印浮点数。
  • %c:用于打印字符。
  • %s:用于打印字符串。
  • %p:用于打印指针地址。
  • %x:用于打印十六进制整数(小写字母)。
  • %X:用于打印十六进制整数(大写字母)。
  • %o:用于打印八进制整数。
  • %e:用于打印科学计数法表示的浮点数(小写字母)。
  • %E:用于打印科学计数法表示的浮点数(大写字母)。
  • %g:用于打印浮点数,根据数值的大小选择 %f 或 %e 表示法。
  • %G:用于打印浮点数,根据数值的大小选择 %f 或 %E 表示法。
  • %%:用于打印百分号。

常见的格式化指令的修饰符

  • *:用于将一个整数参数与指令关联起来。其中 * 表示参数的位置,表示要从可变参数列表中获取一个整数值作为修饰符的参数。例如,%*d 表示将下一个参数作为整数字段的宽度。

  • 0:用于指定用零填充字段的宽度。例如,%05d 表示将整数字段填充为五位宽度,不足的位置用零填充。

  • -:用于左对齐字段。例如,%-10s 表示将字符串字段左对齐,并占用十个字符的宽度。

  • +:用于在正数前面显示加号。例如,%+d 表示在正整数前面显示一个加号,负数仍会显示负号。

  • .:用于指定浮点数的精度或字符串的最大长度。例如,%.2f 表示浮点数字段保留两位小数。

解答

int n = 5;
char line[] = "Hello, World!";
printf("%.*s", n, line);

其中的"%.*s",其实就是:

将一个指定长度的字符串打印到输出流中。具体的字符串长度由传递给 printf 函数的可变参数列表中的第一个整数参数n决定,并用这个整数参数n替代"%.*s"中的“*”号,得到"%.5s",也就是输出长度为5的字符串。

 

你可能感兴趣的:(我的博客,c语言,开发语言)