字符串输出函数有很多,如下表所示:
|
ASCII | 宽字元 | 常规 |
---|---|---|---|
参数的变数个数 | |||
标准版 | sprintf | swprintf | _stprintf |
最大长度版 | _snprintf | _snwprintf | _sntprintf |
Windows版 | wsprintfA | wsprintfW | wsprintf |
参数阵列的指标 | |||
标准版 | vsprintf | vswprintf | _vstprintf |
最大长度版 | _vsnprintf | _vsnwprintf | _vsntprintf |
Windows版 | wvsprintfA | wvsprintfW | wvsprintf |
上表中所列出的函数中有两个最重要,最常用:
1. 参数的变数个数的最大长度版函数:
原型为:int _snprintf(char* _Dest, size_t _Count, const char* _Format,...)
其中_Count 表示能存进目标地址空间里的最大字元数。
用法例子:
char szBuffer [100] ; _snprintf (szBuffer, sizeof(szBuffer), "The sum of %i and %i is %i", 5, 3, 5+3) ;
2. 参数阵列的指标的最大长度版函数:
原型:int _vsnprintf(char* _Dest, size_t _Count, const char* _Format, va_list _Args)
其中_Count表示能存进目标地址空间里的最大字元数,
va_list是C标准库定义的类型。
用法例子:其实_snprintf函数内部一种可能的实现方式是使用_vsnprintf函数来实作:
int _snprintf (char * szBuffer, size_t count, const char * szFormat, ...) { int iReturn ; va_list pArgs ; va_start (pArgs, szFormat) ; iReturn = _vsnprintf (szBuffer, count,szFormat, pArgs) ; va_end (pArgs) ; return iReturn ; }