sprintf 、vsprintf 、_vsntprintf

转载: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);
}

 

原文地址:https://www.cnblogs.com/Toya/p/11046265.html