122 lines
1.7 KiB
C
122 lines
1.7 KiB
C
#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);
|
|
}
|