Пока вы знаете или можете определить количество аргументов, вы можете использовать макросы из <stdarg.h>
:
#include <stdio.h>
#include <stdarg.h>
void test1(int n, ...)
{
va_list args;
va_start(args, n);
for (int i = 0; i < n; i++)
{
int j = va_arg(args, int);
printf("%d: %d\n", i, j);
}
va_end(args);
}
void test2(int a, ...)
{
va_list args;
int i = 0;
printf("%d: %d\n", i++, a);
va_start(args, a);
int j;
while ((j = va_arg(args, int)) > 0)
printf("%d: %d\n", i++, j);
va_end(args);
}
Разница в том, как эти две функции называются:
int main(void)
{
test1(4, 1, 3, 7, 9);
test2(1, 3, 7, 9, 0);
return(0);
}
Семейство printf()
использует альтернативную, но эквивалентную технику; Эти функции сканируют строку формата и определяют тип каждого аргумента (а также количество аргументов) из информации в строке формата. Итак, ваши основные варианты:
- count -
test1()
- Страж -
test2()
- строка формата -
printf()