Beispiel #1
0
Datei: fcts.c Projekt: cmgnn/42
int		ft_putlong_base(long long nb, char *base)
{
	int length;
	int	ret;

	ret = 0;
	length = ft_strlen(base);
	if (length > 0)
	{
		if (nb < 0)
		{
			if (length + 1 == 10)
				write(1, "-", 1);
			nb = -nb;
		}
		if (nb >= length)
		{
			ret += ft_putlong_base(nb / length, base);
			ret += ft_putlong_base(nb % length, base);
		}
		else
		{
			write(1, &base[nb], 1);
			return (1);
		}
	}
	return (ret);
}
Beispiel #2
0
Datei: fcts.c Projekt: cmgnn/42
int	ft_putdouble_base(double d, int prec, char *base)
{
	int		i;
	int		len;

	i = 0;
	len = ft_putlong_base((int)d, base) + 1;
	printchar('.');
	d -= (int)d;
	while (i++ < prec)
	{
		d *= 10;
		if ((int)d == 0)
		{
			printchar('0');
			len++;
		}
	}
	return ft_putlong_base((int)d, BASE_DEC) + len;
}
Beispiel #3
0
void	ft_putlong_base(long n, long base)
{
	char	*base_digits;

	base_digits = "0123456789abcdefghijklmnopqrstuvwxyz";
	if (base == 10 && n < 0)
	{
		if (n == LONG_MIN)
		{
			ft_putstr("-9223372036854775808");
			return ;
		}
		ft_putchar('-');
		n *= -1;
	}
	if (n >= base)
		ft_putlong_base(n / base, base);
	ft_putchar(base_digits[n % base]);
}