привет, я создаю функцию xx_printf и в функции, называемой find_correspondence, у меня слишком много аргументов, поэтому я думал, что могу создать структуру и просто вызвать конструкцию *, но когда я попытался вызвать функцию find_correspondence в xx_printf, я получить segfault! как решить эту проблему.Как добавить аргументы в структуру?
int find_correspondance(char *format, char *tab_sign, ptr_fonc *tab_func, int i, va_list ap)
{
int a;
a = 0;
while ((format[i] != tab_sign[a]) && tab_sign[a] != '\0')
a = a + 1;
if (tab_sign[a] == '\0')
{
my_putchar('%');
my_putchar(format[i]);
}
else
tab_func[a](ap);
return (i);
}
int my_printf(char *format, ...)
{
va_list ap;
ptr_fonc *func_tab;
char *flag_tab;
int i;
va_start(ap, format);
func_tab = tab_func(func_tab);
flag_tab = tab_sign(flag_tab);
i = 0;
while(format[i] != '\0')
{
if (format[i] == '%')
{
i += 1;
if (format[i] == '%')
my_putchar('%');
else if (format[i] == '\0')
return ;
else
**find_correspondence(format, flag_tab, func_tab, i, ap);**
}
else
my_putchar(format[i]);
i++;
}
va_end(ap);
}
find_correspondence (формат, flag_tab, func_tab, я, ар); любая помощь?
Пожалуйста, внесите отступ и используйте брекеты. Может помочь –
Я не вижу, что вы на самом деле используете структуру в любом месте здесь (хотя это не '' va_list', о котором вы говорите). Также, пожалуйста, укажите фактическую строку, в которой он падает. – Dolda2000
Я не понимаю, как функция printf, подобная функции, примет набор аргументов, которые соответствуют структуре. Не используйте va_list, передайте указатель на структуру. Непонятно, что вы пытаетесь сделать. – user1338