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
.
我正在尝试制作一个函数,该函数采用带格式的字符串(如 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
.