예제 #1
0
int		hexa_min_ll(t_struct data, unsigned long long nb, int i, int lower)
{
	int		j;
	int		ret;
	int		l;

	l = data.flag & 1 ? 2 : 0;
	ret = 0;
	j = i;
	if (data.flag & 1 && data.min != 0 && data.flag & 2)
	{
		if (data.flag & 0b00000001 && nb != 0)
			ret += pf_putstr(lower == 1 ? "0x" : "0X");
		while (ret < data.min - (data.prec < j ? 0 : data.prec))
			ret += pf_putchar(data.flag & 0b00000010 ? '0' : ' ');
	}
	else
	{
		while (ret < data.min - (data.prec < j ? j : data.prec))
			ret += pf_putchar(data.flag & 0b00000010 ? '0' : ' ');
		if (data.flag & 0b00000001 && nb != 0)
			ret += pf_putstr(lower == 1 ? "0x" : "0X");
	}
	ret += put_prec_nb(data.prec - j);
	pf_puthexa_noflag_ll(nb, lower);
	return (ret);
}
예제 #2
0
void		conv_str(char *str, t_flags *flags, int *ret)
{
	int		counter;
	char	*tmp;

	counter = 0;
	tmp = str;
	while (*tmp && (counter < flags->precision || flags->precision < 0))
	{
		counter++;
		tmp += 1;
	}
	flags->padding -= counter;
	while (!flags->left && flags->padding > 0)
	{
		flags->padding -= 1;
		flags->zero ? pf_putchar('0', ret) : pf_putchar(' ', ret);
	}
	pf_putstr(str, flags, ret);
	while (flags->left && flags->padding > 0)
	{
		flags->padding -= 1;
		pf_putchar(' ', ret);
	}
}
예제 #3
0
int		hexa_prec_ll(t_struct data, unsigned long long nb, int i, int lower)
{
	int		ret;

	ret = 0;
	ret += put_prec_nb(data.prec - i);
	if (data.flag & 0b00000001)
		ret += pf_putstr(lower == 1 ? "0x" : "0X");
	pf_puthexa_noflag_ll(nb, lower);
	return (ret);
}
예제 #4
0
static int		hexa_prec(t_struct data, unsigned int nb, int i, int lower)
{
	int		ret;

	ret = 0;
	ret += put_prec_nb(data.prec - i);
	if (data.flag & 0b00000001)
		ret += pf_putstr(lower == 1 ? "0x" : "0X");
	if (data.prec != -1)
		pf_puthexa_noflag(nb, lower);
	return (ret);
}
예제 #5
0
int		hexa_hash_ll(t_struct data, unsigned long long nb, int i, int lower)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	if (data.flag & 0b00000001 && nb != 0)
		ret += pf_putstr(lower == 1 ? "0x" : "0X");
	ret += put_prec_nb(data.prec - j);
	pf_puthexa_noflag_ll(nb, lower);
	while (ret < data.min + (data.flag & 1 ? 2 : 0) - j)
		ret += pf_putchar(' ');
	return (ret);
}
예제 #6
0
파일: ft_printf.c 프로젝트: Atokatli/libft
int			ft_printf(const char *format, ...)
{
	va_list		ap;
	const char	*str;
	int			len;

	len = 0;
	va_start(ap, format);
	str = format;
	while (*str)
	{
		if (*str == '%')
		{
			len += print_part(format, str);
			str = str + 1;
			len += do_format(&str, ap);
			format = str + 1;
		}
		str++;
	}
	len += pf_putstr(format);
	va_end(ap);
	return (len);
}