На справочной странице STDARG
об использовании va_arg
для получения следующего аргумента:
Если следующего аргумента нет или тип не совместим с типомфактический следующий аргумент (как продвигается в соответствии с продвижением аргументов по умолчанию), случайные ошибки будут возникать.
Следовательно, если вы не хотите, чтобы случайные ошибки появлялись, вы должны заранее знать количество аргументов.
Тем не менее, если вы хотите проявить осторожность, вы можете попробовать:
void func(int x,char *str, ...)
{
va_list al;
va_start(al,str);
while(x>0)
{
str=va_arg(al,char *);
--x;
}
while(str != NULL)
{
printf("%s ",str);
str=va_arg(al,char *);
}
va_end(al);
}
С,
func(1,"1","2","3");
Я получил вывод,
2 3 U��WVS�O
Если это удовлетворяет вашей цели, вы можете выбрать необходимое количество аргументов из этого вывода.