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));