什么%。* s代表printf?

时间:2012-10-29 15:09:16

标签: c++ c

  

可能重复:
  what does “%.*s” mean in printf in c

我知道这个问题肯定会在其他地方被问过,但搜索“%。* s”对SO没有任何意义。有人可以向我解释以下内容吗?

printf("%.*s", len, buffer);

2 个答案:

答案 0 :(得分:12)

它将输出限制为最多len个字符。 .启动'精度'; *说'从参数列表中使用int来确定精度'。请注意,如果'string'(buffer)长于len,则它甚至不必为空终止。

所有这些都可以在printf()的手册页中轻松找到。

答案 1 :(得分:1)

有一个很好的表here,显示所有不同的格式说明符可以为您做什么。对于您的示例,假设您有一个缓冲区,其长度定义为:

char buf[] = "Hello World";
len = 5;

您可以使用%.*s打印完整字符串的一部分:

printf("%.*s", len, buffer);

在这种情况下,这会输出Hello前5个(1个基础)字符。请注意,这与:

相同
printf("%.5s", buffer);