void LogMe( char *pContent, ... )
{
char Content[80]={0};
va_list argptr;
va_start(argptr, Content);
vsprintf(Content, pContent, argptr);
va_end(argptr); FILE *fp;
char FileName[20]={0};
wsprintf( FileName, "LogMe%d.log", Agent::MyNumber );
fp = fopen( FileName, "a" );
fprintf( fp, Content );
fclose(fp);
return;
}这个函数好像在将列表中的数据向字符串转换或储存的时候出现了问题,能不能告诉我哪里错了?? 应该如何修改??谢谢

解决方案 »

  1.   

    应该用va_arg取那些不定的参数才对va_list argptr;
    va_start(argptr, pContent);  /* Initialize variable arguments.应该是pContent */char* str = va_arg(argptr, char*);
    //取出第一个变参,必须是char*类型,当然你也可以使用其他类型,但是类型名一定要吻合vsprintf(Content, pContent, str); //打印到Content中va_end(argptr);/* Reset variable arguments.      */