snprintf高阶用法

来源:互联网 发布:近视眼手术 知乎 编辑:程序博客网 时间:2024/04/28 08:02

int snprintf(char *str, size_t size, const char *format, ...);  

函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值

将可变个参数(...)按照format格式化成字符串,然后将其复制到str中,返回写入str中的字符串的长度,所以可以利用snprintf函数来提前获取需要的内存空间大小.

按如下格式调用:int ret = snprintf(NULL,0,"%s%d","test", 123); //结果ret为7   

即设置第一二个参数分别为NULL和0,获得的ret就为实际需要的内存空间大小。这对于打印长度不可预知的字符串比较有效,便于我们合理分配空间,既不浪费又不产生截断。   

(1)如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束('\0');   

(2)如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0')  

原创粉丝点击