aboutsummaryrefslogtreecommitdiff
path: root/c00/ex07/ft_putnbr.c
diff options
context:
space:
mode:
Diffstat (limited to 'c00/ex07/ft_putnbr.c')
-rw-r--r--c00/ex07/ft_putnbr.c48
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);
}