什么“%。* s”在asprintf中意味着什么?

时间:2012-12-21 15:31:06

标签: c

  

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

我找到了以下一行:

asprintf(&c, "%s%.*s", *msg_in, size * rxed, buffer)

我想知道%.*s

的含义

2 个答案:

答案 0 :(得分:4)

%.*s格式表示“使用 n 字符的字段宽度打印字符串,其中 n 从下一个参数中读取。”

所以在这里,它打印buffer,宽度为size * rxed个字符。 (必要时用空格填充)

答案 1 :(得分:2)

我强烈建议您阅读手册......

格式字符串中的

.*表示:

  

未在格式字符串中指定precision,而是在必须格式化的参数之前的附加整数值参数。

可以看到详细信息here

所以你没有提供任何细节,但是如果size * rxed的结果是5,那么你可以这样做:

asprintf(&c, "%s%.*s", *msg_in, size * rxed, buffer)

asprintf(&c, "%s%5s", *msg_in, buffer)

达到同样的效果。