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'; 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); b = ft_isbase(base);
if (b < 2) if (b < 2)
return ; return ;
if (nbr >= 0 && nbr < b) if (nbr < b)
{
ft_write_str(base[nbr], result); 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) else if (nbr >= b)
{ {
ft_putnbr_base(nbr / b, base, result); 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) int print_char(va_list args)
{ {
char c; char c;
@ -115,7 +113,7 @@ int print_number(va_list args)
if (!str) if (!str)
return (wrote); return (wrote);
n = va_arg(args, int); n = va_arg(args, int);
ft_putnbr_base(n, "0123456789", str); ft_putnbr_signed(n, "0123456789", str);
len = ft_strlen(str); len = ft_strlen(str);
wrote = write(1, str, len); wrote = write(1, str, len);
free(str); free(str);
@ -223,7 +221,7 @@ int parse_placeholder(const char **format, va_list args)
while (**format && !ft_strchr(conversions, **format)) while (**format && !ft_strchr(conversions, **format))
(*format)++; (*format)++;
if (**format == '%') if (**format == '%')
write(1, *format, 1); wrote = write(1, *format, 1);
else else
wrote = parse_conversion(format, args); wrote = parse_conversion(format, args);
return (wrote); return (wrote);