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';
|
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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user