paco Ok no error checking though

This commit is contained in:
whaffman 2024-10-24 18:43:54 +02:00
parent ed5e23f863
commit 16a9ae0f60

View File

@ -51,28 +51,15 @@ void ft_write_str(char c, char *str)
str[i] = '\0';
}
void ft_putnbr_base(long nbr, char *base, char *result)
void ft_putnbr_base(unsigned long nbr, char *base, char *result)
{
int b;
unsigned int b;
b = ft_isbase(base);
if (b < 2)
return ;
if (nbr >= 0 && nbr < b)
{
if (nbr < b)
ft_write_str(base[nbr], result);
}
else if (nbr < 0)
{
ft_write_str('-', result);
if (nbr > -b)
ft_putnbr_base(-nbr, base, result);
else
{
ft_putnbr_base(nbr / (-b), base, result);
ft_putnbr_base(-(nbr % b), base, result);
}
}
else if (nbr >= b)
{
ft_putnbr_base(nbr / b, base, result);
@ -80,6 +67,17 @@ void ft_putnbr_base(long nbr, char *base, char *result)
}
}
void ft_putnbr_signed(long nbr, char *base, char *result)
{
if (nbr < 0)
{
*result = '-';
ft_putnbr_base((unsigned long)(-nbr), base, result);
}
else
ft_putnbr_base((unsigned long) nbr, base, result);
}
int print_char(va_list args)
{
char c;
@ -115,7 +113,7 @@ int print_number(va_list args)
if (!str)
return (wrote);
n = va_arg(args, int);
ft_putnbr_base(n, "0123456789", str);
ft_putnbr_signed(n, "0123456789", str);
len = ft_strlen(str);
wrote = write(1, str, len);
free(str);
@ -223,7 +221,7 @@ int parse_placeholder(const char **format, va_list args)
while (**format && !ft_strchr(conversions, **format))
(*format)++;
if (**format == '%')
write(1, *format, 1);
wrote = write(1, *format, 1);
else
wrote = parse_conversion(format, args);
return (wrote);