Вопрос 15.4: http://c -faq.com / varargs / varargs1.html
В этом примере кода они, похоже, думают, что va_arg возвращает NULL, если конец спискабыло достигнуто:
len = strlen(first);
va_start(argp, first);
while((p = va_arg(argp, char *)) != NULL)
len += strlen(p);
va_end(argp);
Но в документации для va_arg прямо сказано, что это не так, и что va_arg с радостью пройдет через конец списка.Это согласуется с моим опытом, когда я пытался имитировать приведенный выше код и в результате получал segfault.