尽量使用vsnprintf,否则可能会带来buffer拷贝的时候更改未知越界内存的问题,比如当前的buffer size为10,但如果需要拷贝的数据为15,则buffer[10]-buffer[14]的内存位置会被填充,但这块内存数据可能是给别的用途的,如下实例:
struct s
{
char buffer[10];
int other;
}
这时候调用vsprint,并且传入的参数大于10个字节的话,就会填充other的数据,这是不允许的
另:调用这个函数需要 stdarg.h 头文件.
另: 有时候需要通过一个开关来控制所有的输出,则可用下列方法
void printFunction(const char *fmt,...)
{
va_list args;
bool flag = FALSE;
#if defined (_DEBUG_)
flag = TRUE;
#endif
if (flag)
{
va_start (args, fmt);
int count = vprintf (fmt, args);
va_end (args);
}
}