void myPrintf(const char* format, ...) {
// some code
va_list vl;
printf(format, vl);
}
int main() {
myPrintf("%d\n", 78);
}
在这段代码中,我试图将参数从省略号传递给printf
。它编译但打印垃圾而不是78.这是正确的方法吗?
答案 0 :(得分:6)
您需要执行以下操作:
void myPrintf(const char *format, ...) {
va_list vl;
va_start(vl, format);
vprintf(format, vl);
va_end(vl);
}
请注意使用vprintf
代替printf
。
答案 1 :(得分:1)
答案 2 :(得分:0)
首先初始化vl
va_start(vl,1); //No. of arguments =1
然后从中获取int
printf(format, va_arg(vl,int));