Ejemplo n.º 1
0
int		print_xp(char c, int len, unsigned long long arg, t_flags *fl)
{
	int		nb;

	nb = 0;
	if (fl->prec < len && (fl->minus || arg != 0))
		fl->prec = len;
	if (c == 'p' && fl->larg && arg == 0)
		fl->prec = len;
	if (fl->prec == -1)
		nb += print_char(fl->larg + fl->prec, ' ');
	else if (fl->larg > fl->prec && !fl->minus && !fl->zero)
		nb += print_char(fl->larg - fl->prec, ' ');
	if (fl->dieze && c == 'X' && arg != 0)
		nb += write(1, "0X", 2);
	else if ((arg != 0 && fl->dieze && c == 'x') || c == 'p')
		nb += write(1, "0x", 2);
	if (fl->zero)
		nb += print_char(fl->larg - fl->prec, '0');
	nb += print_char(fl->prec - len, '0');
	if ((c == 'x' || c == 'p') && (arg != 0 || fl->prec))
		nb += ft_putstri(ft_itoa_base(arg, "0123456789abcdef"));
	else if (c == 'X' && (arg != 0 || fl->dieze || fl->prec))
		nb += ft_putstri(ft_itoa_base(arg, "0123456789ABCDEF"));
	if (fl->minus)
		nb += print_char(fl->larg - fl->prec, ' ');
	return (nb);
}
Ejemplo n.º 2
0
int		ft_putnbri(int i)
{
	int		nb;
	long	m;

	nb = 0;
	m = 1;
	if (i == 0)
		return (ft_putchari('0'));
	if (i == -2147483648)
		return (ft_putstri("-2147483648"));
	if (i < 0)
	{
		nb += ft_putchari('-');
		i = -i;
	}
	while (i != 0)
	{
		m = (m * 10) + (i % 10);
		i /= 10;
	}
	while (m != 1)
	{
		nb += ft_putchari((m % 10) + 48);
		m /= 10;
	}
	return (nb);
}
Ejemplo n.º 3
0
static int		ft_putpti(long unsigned int i)
{
	int				nb;
	unsigned long	m;

	nb = 0;
	m = 1;
	nb += ft_putstri("0x");
	if (i == 0)
		return (nb + ft_putchari('0'));
	while (i != 0)
	{
		m *= 16;
		m += i % 16;
		i /= 16;
	}
	while (m > 1)
	{
		if (m % 16 >= 10)
			nb += ft_putchari((m % 16) + 87);
		else
			nb += ft_putchari((m % 16) + 48);
		m /= 16;
	}
	return (nb);
}
Ejemplo n.º 4
0
int		print_di(long long int arg, t_flags *fl)
{
	int		nb;

	nb = 0;
	if (fl->prec == 0 && arg == 0)
		return (nb);
	if (fl->larg > fl->prec && (arg < 0 || fl->space || fl->plus))
		fl->larg--;
	if (fl->prec < nbrlen(arg) && ((arg != 0 || fl->minus) || arg == 0))
		fl->prec = nbrlen(arg);
	if (fl->larg > fl->prec && !fl->minus && !fl->zero && fl->prec != -1)
		nb += print_char(fl->larg - fl->prec, ' ');
	if (arg < 0)
		nb += print_char(1, '-');
	else if (fl->plus)
		nb += print_char(1, '+');
	else if (fl->space)
		nb += print_char(1, ' ');
	if (fl->zero)
		nb += print_char(fl->larg - nbrlen(arg), '0');
	nb += print_char(fl->prec - nbrlen(arg), '0');
	if (arg != 0 || fl->prec || fl->minus)
		nb += ft_putstri(ft_itoa(arg));
	if (fl->minus)
		nb += print_char(fl->larg - fl->prec, ' ');
	return (nb);
}
Ejemplo n.º 5
0
static void		get_result(t_ullong arg, t_format *f)
{
	if (f->precision < (int)ft_strlen(f->buf))
		f->precision = ft_strlen(f->buf);
	if (f->width > f->precision && !f->flag_minus
		&& !f->flag_zero && f->precision != -1)
		f->res += print_char(f->width - f->precision, ' ');
	if (f->flag_zero)
		f->res += print_char(f->width - ft_strlen(f->buf), '0');
	f->res += print_char(f->precision - ft_strlen(f->buf), '0');
	if (arg != 0 || f->precision || f->flag_minus)
		f->res += ft_putstri(f->buf);
	if (f->flag_minus)
		f->res += print_char(f->width - f->precision, ' ');
}
Ejemplo n.º 6
0
int		print_u(int len, unsigned long long arg, t_flags *fl)
{
	int		nb;

	nb = 0;
	if (fl->prec < len && (arg != 0 || fl->minus))
		fl->prec = len;
	if (fl->prec == -1)
		nb += print_char(fl->larg + fl->prec, ' ');
	else if (fl->larg > fl->prec && !fl->minus && !fl->zero)
		nb += print_char(fl->larg - fl->prec, ' ');
	if (fl->zero)
		nb += print_char(fl->larg - len, '0');
	nb += print_char(fl->prec - len, '0');
	if (arg != 0 || fl->prec || fl->minus)
		nb += ft_putstri(ft_itoa_base(arg, "0123456789"));
	if (fl->minus)
		nb += print_char(fl->larg - fl->prec, ' ');
	return (nb);
}