2

可能重复:
c中的printf中的“%.*s”是什么意思

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

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

4

2 回答 2

12

它将输出限制为最多len字符。开始'.精度'; *说“使用参数列表中的一个int来确定精度”。请注意,如果“字符串” ( buffer) 长于 ,则甚至不必以 null 结尾len

所有这些都可以在printf().

于 2012-10-29T15:12:23.430 回答
1

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

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

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

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

在这种情况下,这将输出Hello前 5 个(基于 1)字符。请注意,这与以下内容相同:

printf("%.5s", buffer);
于 2012-10-29T15:24:22.320 回答