/* ************************************************************************** */ /* LE - / */ /* / */ /* ft_printf_process.c .:: .:/ . .:: */ /* +:+:+ +: +: +:+:+ */ /* By: rbousset +:+ +: +: +:+ */ /* #+# #+ #+ #+# */ /* Created: 2019/12/13 00:32:59 by rbousset #+# ## ## #+# */ /* Updated: 2019/12/13 00:33:04 by rbousset ### #+. /#+ ###.fr */ /* / */ /* / */ /* ************************************************************************** */ #include #include #include #include #include /* ** calls the corresponding function to ** the right conv using: ** FT_PRINTF_CONV_CHARSET "cspdiuxX%" */ void ft_printf_process(const char *format, va_list arg, t_printflist *pflist) { int conv; void (*fun_ptr[9])(va_list, t_printflist *); fun_ptr[0] = ft_printf_put_c; fun_ptr[1] = ft_printf_put_s; fun_ptr[2] = ft_printf_put_p; fun_ptr[3] = ft_printf_put_d; fun_ptr[4] = ft_printf_put_d; fun_ptr[5] = ft_printf_put_u; fun_ptr[6] = ft_printf_put_x; fun_ptr[7] = ft_printf_put_big_x; fun_ptr[8] = ft_printf_put_perc; if ((conv = ft_strlchr(FT_PRINTF_CONV_CHARSET, *(format + pflist->flaglen + 1))) >= 0) (*fun_ptr[conv])(arg, pflist); else ft_printf_put_none(pflist); }