[ Foro de C ]
#include <unistd.h>
void ft_putchar(char c)
{
write(1, &c, 1);
}
void ft_putnbr(int nb)
{
if (nb == -2147483648)
{
ft_putnbr(nb / 10);
ft_putchar('8');
}
else if (nb < 0)
{
ft_putchar('-');
ft_putnbr(-nb);
}
else
{
if (nb > 9)
ft_putnbr(nb / 10);
ft_putchar('0' + nb % 10);
}
}
Este código implementa dos funciones en C: ft_putchar y ft_putnbr.
La función ft_putchar recibe un carácter y lo imprime en la salida estándar usando la función write de la biblioteca unistd.h.
La función ft_putnbr recibe un número entero y lo imprime en la salida estándar como una cadena de caracteres. Si el número es negativo, se imprime un signo "-" y se llama a la función ft_putnbr con el valor absoluto del número. Si el número es el valor más negativo que se puede representar con un int, -2147483648, la función llama a ft_putnbr con nb / 10 (es decir, -214748364) y luego imprime el dígito 8. Para los demás casos, la función llama a sí misma de manera recursiva con nb / 10 (lo que descarta el último dígito) y luego imprime el último dígito sumándole '0' y usando la función ft_putchar.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)