[英]format string used in printf function in C programming
在这段代码中:
sprint(buf_ptr, "%.*s", MAX_BUF_LEN, desc);
"%.*s",
是什么意思? snprintf
中的"%20.20s"
和"%.28s"
是什么意思?
在%*s
格式规范中, s
表示参数将是一个(以 null 结尾的)字符串,而*
(宽度说明符)表示字段宽度是作为紧接在字符串前面的参数给出的。
在您的其他示例中,宽度说明符作为固定值给出。
实际上,在您给出的printf
格式中,既有宽度说明符又有精度说明符:宽度是句点之前的值,精度是之后的值。 对于字符串,宽度是最小 output 字段大小(必要时填充空格),精度是要打印的最大字符数(必要时字符串将被截断)。 在任何一种情况下,如果为任何一种指定了*
,则将假定它位于 arguments 列表中(作为整数),紧挨在它适用的字符串之前。
“%.*s”是什么意思?
下面的desc
是一个字符指针,不需要指向字符串1 。 打印将继续,直到打印MAX_BUF_LEN
(精度)或读取null 字符- 以先到者为准。
sprint(buf_ptr, "%.*s", MAX_BUF_LEN, desc);
snprintf 中的“%20.20s”... 是什么意思?
为了清楚起见,让我们使用两个不同的值: "%19.21s"
。
desc
是一个字符指针,不必是字符串。 打印将继续,直到打印21
章程或读取null 字符- 以先到者为准。 如果要打印的章程数量少于 19 个(最小宽度),请在左侧填充空格以使总字符数至少为 19 个。
sprint(buf_ptr, "%19.21s", desc);
snprintf中的...“%.28s”是什么意思?
就像sprint(buf_ptr, "%.*s", 28, desc);
松散地说,想想"%minimum.maximum s"
1字符串是由第一个 null 字符终止并包括在内的连续字符序列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.