簡體   English   中英

C可變參數功能無法正常工作

[英]C Variadic Function not working as intended

我正在嘗試制作一個采用格式字符串的函數(例如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(“ n”,13); 它給出了另一個數字(-858993460)。 有什么問題,我該如何解決?

您應該這樣調用va_start

va_start(list, args);

va_start的第二個參數必須是省略號之前test的最后一個參數的名稱,即args

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM