Я хотел бы использовать список va_args в пользовательской функции форматирования.
Сначала я попытался заставить vsnprintf () работать, чтобы убедиться, что мой список указателей на аргументы передан правильно => это сработало
Но когда я попытался передать свой список указателей аргументов другой функции, указатель не указывает на нужный элемент в стеке
#include <stdio.h>
#include <stdarg.h>
int wrapper_snprintf(char *s, size_t n, const char *format, ...)
{
va_list arg;
//Copy Formated string to buffer => adds a terminating null character to the string
va_start(arg, format);
int res = vsnprintf(s, n, format, arg);
va_end(arg);
return res;
}
void Va_Args_Test_C(char *fmt, ...)
{
char test[30] = { 0 };
char test2[30] = { 0 };
{
//vsnprintf
va_list arg;
va_start(arg, fmt);
vsnprintf(test2, 30, fmt, arg);
va_end(arg);
}
{
//custom format function
va_list arg;
va_start(arg, fmt);
wrapper_snprintf(test2, 30, fmt, arg);
va_end(arg);
}
}
, сработал первый запуск. Правильный аргумент копируется в строку test [].
, второй запуск не сработал. test2 [] содержит исходную строку + какое-то случайное число (которое мне кажется дерьмовым указателем). Так ты можешь мне помочь? Что я делаю не так?