diff options
Diffstat (limited to 'c00/ex07/ft_putnbr.c')
| -rw-r--r-- | c00/ex07/ft_putnbr.c | 48 |
1 files changed, 10 insertions, 38 deletions
diff --git a/c00/ex07/ft_putnbr.c b/c00/ex07/ft_putnbr.c index e147217..2e7e07e 100644 --- a/c00/ex07/ft_putnbr.c +++ b/c00/ex07/ft_putnbr.c @@ -17,45 +17,17 @@ void ft_putchar(char c) write(1, &c, 1); } -void dirty_hack(void) -{ - ft_putchar('2'); - ft_putchar('1'); - ft_putchar('4'); - ft_putchar('7'); - ft_putchar('4'); - ft_putchar('8'); - ft_putchar('3'); - ft_putchar('6'); - ft_putchar('4'); - ft_putchar('8'); -} - void ft_putnbr(int nb) { - int i; - int rev_digits[100]; + unsigned int u_nb; - if (nb < 0) - { - ft_putchar('-'); - if (nb == -2147483648) - { - dirty_hack(); - return ; - } - nb = -nb; - } - i = 0; - while (nb >= 0) - { - rev_digits[i] = nb % 10; - nb = nb / 10; - i++; - } - while (i > 0) - { - i--; - ft_putchar(rev_digits[i] + '0'); - } + u_nb = nb; + if (nb < 0) + { + ft_putchar('-'); + u_nb = -nb; + } + if (u_nb > 9) + ft_putnbr(u_nb / 10); + ft_putnbr(u_nb % 10); } |
