paco Ok no error checking though
This commit is contained in:
parent
ed5e23f863
commit
16a9ae0f60
34
ft_printf.c
34
ft_printf.c
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user