Beispiel #1
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++;
	}
}
Beispiel #2
0
t_flag		*ft_getflag(char *format, t_flag *flag)
{
	int	i;

	i = 0;
	if (format[i] == '%')
	{
		ft_fputstr("%", -1);
		i++;
	}
	else if ((flag->flag = ft_isflag(format[i])) > 0)
		i++;
	flag->nbopt = i + 1;
	return (flag);
}
Beispiel #3
0
void		ft_setflag(t_als *arg, char *s)
{
	int		i;

	i = 0;
	while (s[++i])
	{
		if (ft_isflag(s[i]) || (s[1] == '-' && s[2] == '\0'))
		{
			arg->a = (s[i] == 'a' ? 1 : arg->a);
			arg->r = (s[i] == 'r' ? 1 : arg->r);
			arg->l = (s[i] == 'l' ? 1 : arg->l);
			arg->t = (s[i] == 't' ? 1 : arg->t);
			arg->br = (s[i] == 'R' ? 1 : arg->br);
			arg->d = (s[i] == 'd' ? 1 : arg->d);
			arg->f = (s[i] == 'f' ? 1 : arg->f);
			arg->u = (s[i] == 'u' ? 1 : arg->u);
			arg->n = (s[i] == 'n' ? 1 : arg->n);
			arg->o = (s[i] == 'o' ? 1 : arg->o);
		}
		else
			ft_error_arg(s[i]);
	}
}