一 snprintf()函数
函数原型:
int snprintf(char *buf,size_t size,const char *format,...)
buf:接收数据的缓冲区;
size:接收数据的大小;
两点注意:
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符(‘\0’);
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符(‘\0’),返回值为欲写入的字符串长度。
format:如%d%s等,指定输出数据的格式
…: 输出到缓冲区中的数据
返回值:失败返回负数,返回输入数据的总字节数
二 sprintf()函数的使用
char buf[8];
int n = snprintf(buf, 5, "abcdefghijk");
printf("n %d buf %s\n", n, buf);
运行结果为:
n 11 buf abcd
我们可以看到snprintf()第二个参数是5,实际只保存了4个字节,原因是size-1=实际存放可以的字节数;
因为size的大小包含‘/0’这个字符