Вы можете использовать функции стиля vsprintf, чтобы получить печать в стиле printf для вашего параметра переменной длины. Однако для этого нет необходимости. Если вы решите написать свою функцию, вы можете продолжать принимать параметры, пока она не встретит нулевой указатель.
va_list ap;
char *param;
va_start(ap,fmt);
param = va_arg(ap,char*);
while(param)
{
do something...
param = va_arg(ap,char*);
}
или вы можете указать количество параметров в качестве первого параметра вашей функции
void my_printf(int param_num,...)
{
va_list ap;
char *param;
va_start(ap,fmt);
while(param_num)
{
do something...
param = va_arg(ap,char*);
param_num--;
}
}
Это действительно зависит от вас, возможности безграничны. Я думаю, что единственное реальное требование к эллипсам - это наличие по крайней мере одного параметра перед эллипсами.