Я должен не согласиться с другими предыдущими постерами. Исходный код не повторяется один и тот же va_list
дважды. Он создает два разных и по очереди перебирает каждый из них, хотя одна и та же переменная используется для хранения обоих списков.
На самом деле мне удалось правильно запустить функцию. Следовательно, я предполагаю, что проблема в том, как была вызвана функция. Вот как я это назвал, обратите внимание на конечный NULL
и настройку параметра output
:
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
// ... combine_strings() goes here...
int main()
{
char * res;
char * * output = &res;
combine_strings(output, "FOO", "BAR", "BAZ", NULL);
printf("%s\n", *output);
}
Приведенный выше код выводит FOOBARBAZ
, как и ожидалось.