近日看到一个函数,小弟愚昧, 第一次见过这个参数(大家不要笑哈..)
知道的朋友告知下这个参数的作用,谢谢了哈!
函数原型如下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);
}第二个参数的那三个点,是起什么作用的? 在此函数中也并未见到这三个点的运用,为什么要做为参数??
知道的朋友告知下这个参数的作用,谢谢了哈!
函数原型如下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);
}第二个参数的那三个点,是起什么作用的? 在此函数中也并未见到这三个点的运用,为什么要做为参数??
...代表可以输入多个参数。参数的个数是未知的。
例如我们用到printf()的原型就是这样定义的。
int printf(const char *format[, argument, ...]);
printf("%s", buff1);
printf("%s %s", buff1, buff2);这种可变参函数定义时候就是参数加...
函数内都有va_系列函数, va_start开始 va_end结束,你要写这种函数的话,照着它的样子用就ok
还想问下 这样的函数能重载吗? 马上就结账了