int printf_flags(char *f, int *flag, int i, int j) { while (id_chr("0123456789 -+#.", f[i]) != -1) { if (ft_isdigit(f[i])) { if (f[i] == '0') *flag += 1; else { while (ft_isdigit(f[i + 1])) i++; *flag += 100000; } } *flag = ft_setflags(f[i], flag); if (f[i] == '.') { is_dot_valid(f, flag, i); return (j); } i++; } return (j); }
void ft_check_conv(t_printf *s, const char *format, va_list ap) { s->i++; ft_setflags(s); while (ft_isflag(&s->i, format)) { ft_check_flags(s, format, ap); } if (ft_isconv(s->i, format)) { if (format[s->i] == '%') ft_putpercent(s); else if (format[s->i] == 'c') ft_putchar_pf(ap, s); else if (format[s->i] == 's' || format[s->i] == 'i') ft_putstr_pf(ap, s); else if (format[s->i] == 'd') ft_which_digit(ap, s); else if (format[s->i] == 'x') ft_which_hexa_min(ap, s); else if (format[s->i] == 'X') ft_which_hexa_maj(ap, s); else if (format[s->i] == 'o') ft_put_octa(ap, s); s->i++; } }