儘量使用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);
}
}