繁体   English   中英

C 编程中 printf function 中使用的格式字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM