-
Notifications
You must be signed in to change notification settings - Fork 1
/
conversion_specifiers.c
49 lines (46 loc) · 1.42 KB
/
conversion_specifiers.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "main.h"
#include <stdio.h>
/**
*handle_convt_specifiers - handling the conversion specifiers
* @num: the number
* @fieldWidth: the field width
* @precision: the percision
* Return: the number of chars printed
*/
int handle_convt_specifiers(int num, int fieldWidth, int precision)
{
int f = 0;
if (fieldWidth > 0 && precision > 0)
{
f += printf("%*.*d", fieldWidth, precision, num);
f += printf("%*.*u", fieldWidth, precision, (unsigned int)num);
f += printf("%*.*o", fieldWidth, precision, (unsigned int)num);
f += printf("%*.*x", fieldWidth, precision, (unsigned int)num);
f += printf("%*.*X", fieldWidth, precision, (unsigned int)num);
}
else if (fieldWidth > 0)
{
f += printf("%*d", fieldWidth, num);
f += printf("%*u", fieldWidth, (unsigned int)num);
f += printf("%*o", fieldWidth, (unsigned int)num);
f += printf("%*x", fieldWidth, (unsigned int)num);
f += printf("%*X", fieldWidth, (unsigned int)num);
}
else if (precision > 0)
{
f += printf("%.*d", precision, num);
f += printf("%.*u", precision, (unsigned int)num);
f += printf("%.*o", precision, (unsigned int)num);
f += printf("%.*x", precision, (unsigned int)num);
f += printf("%.*X", precision, (unsigned int)num);
}
else
{
f += printf("%d", num);
f += printf("%u", (unsigned int)num);
f += printf("%o", (unsigned int)num);
f += printf("%x", (unsigned int)num);
f += printf("%X", (unsigned int)num);
}
return (f);
}