Я пытаюсь передать переменные аргументы, которые я получаю другой функции, которую я вызываю. Я написал пример кода, чтобы проверить это. Почему my_printf работает, а не my2_printf в приведенном ниже коде?
#include <stdio.h>
#include <stdarg.h>
my2_printf(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
printf(fmt, ap);
va_end(ap);
}
my_printf(const char *fmt, ...)
{
va_list ab;
va_start(ab, fmt);
vfprintf(stdout, fmt, ab);
va_end(ab);
}
main()
{
int i = 5;
my_printf("This is a test %d => %s\n", i, "done");
my2_printf("This is a test %d => %s\n", i, "done");
}
Вывод, который я получаю, следующий:
This is a test 5 => done
This is a test -171084944 =>