_snprintf_s不会再最后加入\0,如果溢出返回-1.
注意:微软在visual studio 2015中终于实现了snprintf函数。在以前的visual studio中,参考实现如下:
#if defined(_MSC_VER) && _MSC_VER < 1900
int vsnprintf(char *outBuf, size_t size, const char *format, va_list ap)
{
int count = -1;
if (size != 0)
count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
if (count == -1)
count = _vscprintf(format, ap);
return count;
}
int snprintf(char *outBuf, size_t size, const char *format, ...)
{
int count;
va_list ap;
va_start(ap, format);
count = vsnprintf(outBuf, size, format, ap);
va_end(ap);
return count;
}
#endif