C Variadic功能无法按预期工作

时间:2015-03-07 21:12:17

标签: c variadic-functions

我试图制作一个带格式字符串的函数(比如printf,而不是"%i"我希望它是" n"(对于学习目的,不要问我为什么))。这是功能:

void test(char* args, ...)
{
    int length = strlen(args);
    va_list list;
    va_start(list, length);

    for (int i = 0; i < length; i++)
    {
        if (args[i] == 'n')
        {
            printf("%i", va_arg(list, int));
        }
    }
}

问题在于,当我这样称呼时:test(&#34; n&#34;,13);它给出了另一个数字(-858993460)。问题是什么?我该如何解决?

1 个答案:

答案 0 :(得分:3)

您应该像这样致电va_start

va_start(list, args);

va_start的第二个参数必须是省略号前test的最后一个参数的名称,即args