[英]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.