#include "main.h" /** * printf_dec - prints decimal * @args: argument to print * Return: number of characters printed */ int printf_dec(va_list args) { /* initvars*/ int n = va_arg(args, int); int num, last = n % 10, digit; int i = 1; int exp = 1; n = n / 10; num = n; if (last < 0) { _putchar('-'); num = -num; n = -n; last = -last; i++; } if (num > 0) { while (num / 10 != 0) { exp = exp * 10; num = num / 10; } num = n; while (exp > 0) { digit = num / exp; _putchar(digit + '0'); num = num - (digit * exp); exp = exp / 10; i++; } } _putchar(last + '0'); return (i); } #include "main.h" /** * printf_oct - prints an octal number. * @val: arguments. * Return: counter. */ int printf_oct(va_list val) { int i; int *array; int counter = 0; unsigned int num = va_arg(val, unsigned int); unsigned int temp = num; while (num / 8 != 0) { num /= 8; counter++; } counter++; array = malloc(counter * sizeof(int)); for (i = 0; i < counter; i++) { array[i] = temp % 8; temp /= 8; } for (i = counter - 1; i >= 0; i--) { _putchar(array[i] + '0'); } free(array); return (counter); } /** * printf_hex_aux - prints an hexgecimal number. * @num: arguments. * Return: counter. */ int printf_hex_aux(unsigned long int num) { long int i; long int *array; long int counter = 0; unsigned long int temp = num; while (num / 16 != 0) { num /= 16; counter++; } counter++; array = malloc(counter * sizeof(long int)); for (i = 0; i < counter; i++) { array[i] = temp % 16; temp /= 16; } for (i = counter - 1; i >= 0; i--) { if (array[i] > 9) array[i] = array[i] + 39; _putchar(array[i] + '0'); } free(array); return (counter); } /** * printf_hex - prints an hexgecimal number. * @val: arguments. * Return: counter. */ int printf_hex(va_list val) { int i; int *array; int counter = 0; unsigned int num = va_arg(val, unsigned int); unsigned int temp = num; while (num / 16 != 0) { num /= 16; counter++; } counter++; array = malloc(counter * sizeof(int)); for (i = 0; i < counter; i++) { array[i] = temp % 16; temp /= 16; } for (i = counter - 1; i >= 0; i--) { if (array[i] > 9) array[i] = array[i] + 39; _putchar(array[i] + '0'); } free(array); return (counter); }