常见snprintf与_snprintf的区别是_snprintf不会末尾置0就不说了,能搜到很多相关的内容。
先从遇到的问题说起:
我们的服务器是跨平台的,有个宏 tsnprintf ,在linux定义成了snprintf,在window下就是_snprintf。
有一个需求是拼字符串,像是 ”小王,小李,小张“,名字用中拼上个逗号。
char szName[256] = {0};
tsnprintf(szName,sizeof(szName),"%s%s%s",szName,",",GetName(2));
用自己作为拼接的变量再新生一个串出来,这个在window下好用,在linux下就不行了。
所以,snprintf操作会首先清空目标字符串,之后再操作,而_snprintf不会。