可変引数について質問です。

void my_printf(char *,...);

void my_printf(char *src,...)
{
va_list ap;
char *param;

va_start(ap,src);
while((param=va_arg(ap,char *)!=NULL))
{
ここに必要な処理
}
va_end(ap);
}

my_printf("%s %s","param1","pram2",NULL);

みたいな関数を書いたとして、可変引数の終了条件はNULLです。

標準のprintfのように最後のNULLをつけなくてよくする方法はありますか?
可変引数の個数を引数として渡す方法以外で。