Unicode简介(二十)

2010-12-30 21:07:57 · 作者: · 浏览: 12600
,sprintf函式可以这样编写:

int sprintf (char * szBuffer, const char * szFormat, ...)
{
int iReturn ;
va_list pArgs ;
va_start (pArgs, szFormat) ;
iReturn = vsprintf (szBuffer, szFormat, pArgs) ;
va_end (pArgs) ;
return iReturn ;
}

va_start巨集将pArg设置为指向一个堆叠变数,该变数位址在堆叠参数szFormat的上面。

由於许多Windows早期程式使用了sprintf和vsprintf,最终导致Microsoft向Windows API中增添了两个相似的函式。Windows的wsprintf和wvsprintf函式在功能上与sprintf和vsprintf相同,但它们不能处理浮点格式。

当然,随著宽字元的发表,sprintf类型的函式增加许多,使得函式名称变得极为混乱。表2-1列出了Microsoft的C执行时期程式库和Windows支援的所有sprintf函式。

表2-1
ASCII宽字元常规
 
 参数的变数个数        标准版 sprintf swprintf _stprintf 最大长度版 _snprintf _snwprintf _sntprintf Windows版 wsprintfA wsprintfW wsprintf  参数阵列的指标        标准版 vsprintf vswprintf _vstprintf 最大长度版 _vsnprintf _vsnwprintf _vsntprintf Windows版 wvsprintfA wvsprintfW wvsprintf

在宽字元版的sprintf函式中,将字串缓冲区定义为宽字串。在宽字元版的所有这些函式中,格式字串必须是宽字串。不过,您必须确保传递给这些函式的其他字串也必须由宽字元组成。

格式化讯息方块
 

程式2-1所示的SCRNSIZE程式展示了如何实作