现在的位置: 首页 > 综合 > 正文

vsprintf()函数

2013年08月05日 ⁄ 综合 ⁄ 共 1524字 ⁄ 字号 评论关闭

vsprintf()函数中的自变量是位于数组中的,数组元素的字符串之前都要加上百分号(%)。这个函数是“一步一步[step-by-step]”按顺序执行。在第一个%后,将插入第一个数组元素;在第二个%后,将插入第二个数组元素,依次类推。

vsprintf是sprintf的一个变形,它只有三个参数。vsprintf用於执行有多个参数的自订函式,类似printf格式。vsprintf的前两个参数与sprintf相同:一个用於保存结果的字元缓冲区和一个格式字串。第三个参数是指向格式化参数阵列的指标。实际上,该指标指向在堆叠中供函式呼叫的变数。va_list、va_start和va_end巨集(在STDARG.H中定义)帮助我们处理堆叠指标。本章最後的SCRNSIZE程式展示了使用这些巨集的方法。使用vsprintf函式,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的上面。

函数名:   vsprintf    

  功     能:   送格式化输出到串中    

  用     法:   int   vsprintf(char   *string,   char   *format,   va_list   param);    

  程序例:    

   

  #include   <stdio.h>    

  #include   <conio.h>    

  #include   <stdarg.h>    

   

  char   buffer[80];    

   

  int   vspf(char   *fmt,   ...)    

  {    

        va_list   argptr;    

        int   cnt;    

   

        va_start(argptr,   fmt);    

        cnt   =   vsprintf(buffer,   fmt,   argptr);    

        va_end(argptr);    

   

        return(cnt);    

  }    

   

  int   main(void)    

  {    

        int   inumber   =   30;    

        float   fnumber   =   90.0;    

        char   string[4]   =   "abc";    

   

        vspf("%d   %f   %s",   inumber,   fnumber,   string);    

        printf("%s\n",   buffer);    

        return   0;    

  }  

  va_list   ap;  

  int   len;  

  va_start(ap,   format);  

  vsprintf(_this->printfBuf,   format,   ap)  

  va_end(ap);  

   

  请问vsprintf的作用干什么啊?根据上面代码能详细介绍下吗?谢谢!  

  ===============================  

  把参数   ap   按照   format   指定的格式,  

  写到   _this->printfBuf   中

基本和   sprinf   类似   ......

 比如上面给的例子:  

  vsprintf(buffer,   fmt,   argptr);    

   

  fmt="%d   %f   %s"    

  就是把后面的参数按照   "%d   %f   %s"     这个格式输出到   buffer   中

注:此博文引用他人而来

抱歉!评论已关闭.