转载:https://blog.csdn.net/anye3000/article/details/6593551
sprintf函数的定义为:
int sprintf(char *szBuffer, const char *szFormat,...);
第一个参数:一个字符缓冲区,后面是一个格式字符串。sprintf并不是把格式化结果写到标准输出,而是将其存入szBuffer。该函数返回该字符串的长度。
vsprintf 函数定义如下:
int vsprintf(char *string, char *format, va_list param);
vsprintf 是sprintf 的一个变形,它只有三个参数。vsprintf 用于执行有不定数量参数的函数,类似printf 格式。vsprintf的前两个参数与sprintf相同:一个用于保存结果的字符串缓冲区和一个格式化字符串。第三个参数是指向格式化参数队列的指针。实际上,该指针指向在堆栈中供函数调用的变量。va_list、va_start和va_end宏(在STDARG.H中定义)帮助我们处理堆栈指针。
_vsntprintf:
int CDECL MsgVsntprintf(char *szCaption, char *szFormat,...) { char szBuffer[200]; va_list pArgList; va_start (pArgList,szFormat); _vsntprintf(szBuffer,sizeof(szBuffer)/sizeof(char),szFormat,pArgList); va_end (pArgList); return MessageBox(NULL,szBuffer,szCaption,0); }