int snprintf(char*str, size_t size,constchar*format, ...);
设将可变参数(...),按照 format的格式 格式化成字符串,复制到 str 中,size 是要写入的字符的最大数目,超过 size 会被截断。size是限定最终生成的strt的字符数,而不是(...)的字符数,需要注意。当格式化后的字符串长度小于等于 size,则会把字符串全部复制到 str 中,并给其后添加一个字符串结束符 \0,如果格式化后的字符串长度大于 size,超过 size 的部分会被截断,只将其中的 (size-1) 个字符复制到 str 中,并给其后添加一个字符串结束符 \0。
注意:snprintf的返回值是欲写入的字符串(即源字符串)长度,而不是实际写入的字符串度。
实例代码:
char test[8];
int ret= snprintf(test,5,"1234567890");
printf("%d|%s\n",ret,test);
运行结果:
10|1234
最后,注意这个函数在linux和windows下是不同的linux下用的是snprintf(),而windows下用的是_snprintf();
参考: