void myPrintf(const char* format, ...) {
    // some code
    va_list vl;
    printf(format, vl);
}

int main() {
    myPrintf("%d\n", 78);
}

In this code I have tried to pass the argument from ellipsis to printf. It compiles but prints garbage instead of 78. What is the right way of doing it?

有帮助吗?

解决方案

You need to do the following:

void myPrintf(const char *format, ...) {
    va_list vl;
    va_start(vl, format);
    vprintf(format, vl);
    va_end(vl);
}

Please note the use of vprintf instead of printf.

其他提示

Two problems:

  1. The first is that you don't initialize vl, use va_start for that. Don't forget to use va_end afterwards.

  2. The other problem is that printf doesn't take a va_list argument. Use vprintf for that.

First Initialize vl

va_start(vl,1); //No. of arguments =1

Then take the int from it

printf(format, va_arg(vl,int));

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top