va_arg总是运行4次

0 c variadic-functions

我正在学习stdarg.h在ci我试图打印传递给函数的所有参数,而不知道有多少参数,但我还没有提出解决方案,在此过程中发生这种情况,无论我传递给strtest.它总是打印0. 1. 2. 3.

void strtest(char *fmt, ...){
    va_list argp;
    int i = 0;

    va_start(argp, fmt);

    while(va_arg(argp, char*))
        printf("%d\t", i++ );

    va_end(argp);
}

int main(int argc, char *argv[]){
    strtest("s");
    printf("\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

kei*_*hmo 5

没有标准的机制可以告诉你传递给varargs函数的参数数量.函数就像printf()工作一样,因为它们可以通过检查格式字符串来确定参数的数量.