我试图制作一个带格式字符串的函数(比如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)。问题是什么?我该如何解决?
答案 0 :(得分:3)
您应该像这样致电va_start
:
va_start(list, args);
va_start
的第二个参数必须是省略号前test
的最后一个参数的名称,即args
。