目录
一、函数概述
snprintf 是CAPL提供的字符串格式化写入函数,用来把按格式生成的文本写入指定字符缓冲区。snprintf 接受一个长度参数 len,用于限制写入的最大字符数(包含终止的 '\0' ),从而避免缓冲区溢出。
二、语法与参数
long snprintf(char dest[], long len, char format[], ...);
dest:目标字符数组(缓冲区),写入结果到这个数组。
len:本次写入允许的最大字符数(包括终止符 '\0' )。必须 ≤ 缓冲区实际大小。推荐用elcount(dest) 来传递数组长度。
format:格式字符串,支持与 write 相同的一系列格式说明符(%s,%d,%ld,%u,%x,%.2f等)。
...:与 format 对应的参数列表。
三、示例分析
char buffer[100], str[7] = "Vector";
long i;
i = snprintf(buffer, elcount(buffer), "string: %s\n", str);
write("Output:\n%s: character count = %d\n", buffer, i);
逐步解释:
1. buffer[100]:可存100字节。
2. str = "Vector":字符串长度6(不计终止符)。
3. format:字符串是 "string:%s\n",其中 "string:" 有8 个字符(包括冒号后的空格),%s 会被 "Vector" 替换,末尾再加上 \n (1个字符)。
4. 因此写入到 buffer 的字符数 = 8+6+1=15(不包括终止 '\0')。
5. snprintf 被调用时 len = elcount(dest) = 100,空间足够,所以完整写入,返回值 i = 15。
6. write 将打印出 buffer 的内容和字符数。
输出:
Output:
string:Vector
:character count = 15
1万+

被折叠的 条评论
为什么被折叠?



