void my_printnbr(int fd, int nbr, char *base) { if (nbr < 0) { my_fdputchar(fd, '-'); nbr *= -1; } if (nbr >= my_strlen(base)) { my_printnbr(fd, nbr / my_strlen(base), base); my_printnbr(fd, nbr % my_strlen(base), base); } else my_fdputchar(fd, base[nbr]); }
int my_printbin(int fd, va_list *ap) { int nbr; int written; nbr = va_arg(ap, int); written = 1; my_printnbr(fd, nbr, "01"); while (nbr != 0) { nbr /= 2; written += 1; } return (written); }
int my_printhexa(int fd, va_list *ap) { int nbr; int written; nbr = va_arg(ap, int); written = 1; my_printnbr(fd, nbr, "0123456789ABCDEF"); while (nbr != 0) { nbr /= 16; written += 1; } return (written); }
int my_printoct(int fd, va_list *ap) { int nbr; int written; nbr = va_arg(ap, int); written = 1; my_printnbr(fd, nbr, "01234567"); while (nbr != 0) { nbr /= 10; written += 1; } return (written); }
int my_printnbr(int nb) { int output; output = 0; if (nb == -2147483648) { output = output + my_printstr("-2147483648"); return (output);; } if (nb < 0) { nb = -nb; my_printchar('-'); output = output + 1; } if (nb > 9) output = output + my_printnbr(nb / 10); output = output + my_printchar(nb % 10 + 48); return (output); }