void myPrintf(const char* format, ...) {
// some code
va_list vl;
printf(format, vl);
}
int main() {
myPrintf("%d\n", 78);
}
このコードでは、引数を省略記号から に渡そうとしましたprintf。コンパイルはしますが、78 ではなくガベージを出力します。正しい方法は何ですか?
次のことを行う必要があります。
void myPrintf(const char *format, ...) {
va_list vl;
va_start(vl, format);
vprintf(format, vl);
va_end(vl);
}
vprintfの代わりに を使用することに注意してくださいprintf。
最初の初期化vl
va_start(vl,1); //No. of arguments =1
それintから
printf(format, va_arg(vl,int));