我怎么问论点?

时间:2019-07-15 02:00:24

标签: c string arguments

我想将参数的数量保存在块或计数中。 不能自动询问参数编号吗?

void format(int max, ...)
{
    va_list arg_ptr;
    int args;
    char* day;
    va_start(arg_ptr, max);
    args = 0;
    while (args < max)
    {
        day = va_arg(arg_ptr, char*);
        printf("Day: %s\n", day);
        args++;
    }
    va_end(arg_ptr);
}

format(2, "Sat", "Sun");

1 个答案:

答案 0 :(得分:2)

不,不可能。在运行时无法获得通过va_args传递的参数数量。如果确实存在,那么标准库printf肯定会在现在使用它来捕获常见的编程错误,包括一些安全漏洞。