#include "main.h" /** * printf_char - char. * @val: args. * Return: 1. */ int printf_char(va_list val) { char s; s = va_arg(val, int); _putchar(s); return (1); } /** * printf_bin - binary number. * @val: arguments. * Return: 1. */ int printf_bin(va_list val) { /* inits */ int flag = 0; int cont = 0; int i, a = 1, b; unsigned int num = va_arg(val, unsigned int); unsigned int p; for (i = 0; i < 32; i++) { p = ((a << (31 - i)) & num); if (p >> (31 - i)) flag = 1; if (flag) { b = p >> (31 - i); _putchar(b + 48); cont++; } } if (cont == 0) { cont++; _putchar('0'); } return (cont); } /** * printf_HEX - prints an hexgecimal number. * @val: arguments. * Return: counter. */ int printf_HEX(va_list val) { int i; int *arr; int counter = 0; unsigned int num = va_arg(val, unsigned int); unsigned int temp = num; while (num / 16 != 0) { num /= 16; counter++; } counter++; arr = malloc(counter * sizeof(int)); for (i = 0; i < counter; i++) { arr[i] = temp % 16; temp /= 16; } for (i = counter - 1; i >= 0; i--) { if (arr[i] > 9) arr[i] = arr[i] + 7; _putchar(arr[i] + '0'); } free(arr); return (counter); } #include "main.h" /** * printf_HEX_aux - prints an hexdecimal number. * @num: number to print. * Return: counter. */ int printf_HEX_aux(unsigned int num) { int i; int *arr; int counter = 0; unsigned int temp = num; while (num / 16 != 0) { num /= 16; counter++; } counter++; arr = malloc(counter * sizeof(int)); for (i = 0; i < counter; i++) { arr[i] = temp % 16; temp /= 16; } for (i = counter - 1; i >= 0; i--) { if (arr[i] > 9) arr[i] = arr[i] + 7; _putchar(arr[i] + '0'); } free(arr); return (counter); }