I have:
#include <unistd.h>
//can't use atoi
void ft_putnbr(int nb)
{
if (nb == -2147483648)
{
write(1, "-2147483648", 11);
}
if (nb > -2147483648 && nb < 0)
{
write(1, "-", 1);
ft_putnbr(nb * -1);
}
if (nb >= 0 && nb < 10)
{
write(1, &nb, 1);
return;
}
if (nb >= 10 && nb <= 2147483647)
{
ft_putnbr(nb / 10);
ft_putnbr(nb % 10);
}
}
int main(void)
{
ft_putnbr(-2147483648);
write(1, "\n", 1);
ft_putnbr(-200);
write(1, "\n", 1);
ft_putnbr(-1);
write(1, "\n", 1);
ft_putnbr(0);
write(1, "\n", 1);
ft_putnbr(1);
write(1, "\n", 1);
ft_putnbr(9);
write(1, "\n", 1);
ft_putnbr(10);
write(1, "\n", 1);
ft_putnbr(11);
write(1, "\n", 1);
ft_putnbr(2147483647);
}
I get only the first condition but not anything else besides the "-" if I replace it with printf I do get them. But even if I add a new function like:
void print(char c)
{
write(1, &c, 1);
}
and put:
print((char) nb);
I don't get anything still. Just by doing:
print(nb + 48);
Do I get the desired output. WHAT is going on?