- 论坛徽章:
- 0
|
我写了这两个函数,他们的声明和实现是这样定义的:
bool Func1(char *arg1, ...);
bool Func2(char *arg1, ...);
bool Func1(char *arg1, ...)
//Func1函数的目的是为了调用Func2函数,参数结构不可变{
va_list ap;
va_start(ap, arg1);
if (!Func2(arg1, ap))
return false;
va_end(ap);
return true;
}
bool Func2(char *arg1, ...)
//Func2函数的目的是为了获得该函数的参数的值,即取出每一个参数的值
//参数结构不可变{
char argArray[1000] = "";
char *pTmp = NULL;
va_list list;
pTmp = arg1;
va_start(list, arg1);
while (pTmp != NULL)
{
sprintf(argArray, "%s|", pTmp);
pTmp = va_arg(list, char *);
}
va_end(list);
printf("%s\n", argArray);
return true;
}
int main()
{
Func1("123", "234", "345", (char *)NULL);
return 0;
}
该程序的输出是:
123|8!@|8!@|?|棠3繻脣聙=| @|123|234|345|我这个程序需要得到的结果应该是:
123|234|345|才对,为什么中间有这些不该有的乱字符啊?
(说明:函数Func1和Func2的参数结构不能修改,两个函数送的参数都是无限制的,最后以NULL结束)。
请高手们指教小弟一下,这里先谢了。如果有什么更好的方法可以实现这个功能,还请指教! |
|