近日看到一个函数,小弟愚昧, 第一次见过这个参数(大家不要笑哈..)
知道的朋友告知下这个参数的作用,谢谢了哈!
函数原型如下extern void WriteErrorInfo(const char* format,...);void WriteErrorInfo(const char* format,...)
{
strcpy(g_szLogFileName, GetLogDir());
strcat(g_szLogFileName, "\\");
strcat(g_szLogFileName, "isguard_log.txt");
FILE *fp;
if((fp=fopen(g_szLogFileName,"at"))==NULL)
return;

if(_filelength(_fileno(fp)) > INFOFILELEN)
{
fclose(fp);
if((fp=fopen(g_szLogFileName,"wt"))==NULL) return;
}

char buf[200];
_strdate(buf);
fprintf(fp,"%s ",buf);            //写日期
_strtime(buf);
fprintf(fp,"%s ",buf);            //写时间
va_list pvar;
va_start(pvar,format);
vsprintf(buf,(char *)format,pvar);
fprintf(fp,"%s\n",buf);
va_end(pvar);

fclose(fp);
}第二个参数的那三个点,是起什么作用的? 在此函数中也并未见到这三个点的运用,为什么要做为参数??

解决方案 »

  1.   

    表示可变参数个数,根据format分析后面传来的参数.看看C教材的printf就知道了
      

  2.   

    这种方式只在C语言内支持,C的库函数有一些也使用这种方式
    ...代表可以输入多个参数。参数的个数是未知的。
    例如我们用到printf()的原型就是这样定义的。
    int printf(const char *format[,   argument,   ...]);   
      

  3.   

    比如 printf() 可以有不同的参数
    printf("%s", buff1);
    printf("%s %s", buff1, buff2);这种可变参函数定义时候就是参数加...
    函数内都有va_系列函数, va_start开始 va_end结束,你要写这种函数的话,照着它的样子用就ok
      

  4.   

    多谢AJ的解释,大概明白了, CString中的Format也是这样,
    还想问下 这样的函数能重载吗? 马上就结账了