首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于可变形参的有关问题,请求解决

2012-02-04 
关于可变形参的问题,请求解决.请问,我有下面两个方法.都是使用可变形参的.但是不能出现预期的结果.请哪位

关于可变形参的问题,请求解决.
请问,我有下面两个方法.都是使用可变形参的.但是不能出现预期的结果.请哪位达人指点一下.

int   writeError(PLOGGER   log   ,PUCHAR     pmethod   ,PUCHAR   *   err   ,...)
{
int   ref   =   -1;
va_listvaList;
va_start(vaList,   err);     //调试中没有出现预期的值
ref   =   _filewrite(log,   LOG_ERRTEXT,   pmethod,   err   ,vaList   );
va_end(vaList);
return   ref;
}

static   int   _filewrite(PLOGGER   log,PUCHAR   type,   PUCHAR   pmethod   ,PUCHAR   info,   va_list   vaList)
{

int   ref   =   -1;
UCHAR   buff[1024];
UCHAR   format[512];
DATE   tme=   time(NULL);
struct   tm   *t=localtime(&tme);

if(log-> fid   ==   NULL   ||   log-> mutex   ==   NULL)
{
return   -1;
}

sprintf(format,   "%s,   %04d-%02d-%02d   %02d:%02d:%02d,   %s,   %s\r\n ",  
type   ,  
t-> tm_year+1900,
t-> tm_mon+1,
t-> tm_mday,
t-> tm_hour,
t-> tm_min,
t-> tm_sec,
pmethod,
info);

sprintf(buff,format,vaList);
lock(log-> mutex);
if(dateCompare(tme,   log-> lastDate)   >   LOG_CHECKTIME)
{
if(changeFile(log))
{
return   -1;
}
}
ref   =   write(log-> fid-> _file,buff,strlen(buff));
unlock(log-> mutex);
return   ref;
}

//调用
...   ....

//文件中出现:[error],   2007-04-02   15:14:47,   aabsnc,   this   is   test,1244972
writeError(log, "aabsnc ", "this   is   test,%d ",1);

//文件中出现:[error],   2007-04-02   15:14:47,   XXXXX,   this   is   test,h@B
writeError(log, "XXXXX ", "this   is   test,%s ", "aa ");

[解决办法]
sprintf(buff,format,vaList);
应该用vsprintf
[解决办法]
vsprintf
[解决办法]
vsprintf 是一点 ~~

va_start(vaList, err); //调试中没有出现预期的值
这个是什么意思?
先不要调用 _filewrite函数,
就循环获得 可变参数列表, 输出这些参数看看是否正确 ~

热点排行