我知道这个问题肯定会在其他地方被问过,但搜索“%。* s”对SO没有任何意义。有人可以向我解释以下内容吗?
printf("%.*s", len, buffer);
答案 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);