Пример #1
0
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);
}
Пример #2
0
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++;
	}
}