-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathprint_number_buff.c
85 lines (81 loc) · 1.82 KB
/
print_number_buff.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "holberton.h"
/**
* print_number - Copy the given int one digit at a time to the buffer to print
* @n: The integer to print
* @buffer: Buffer beign copied to to print
* @buflen: Length of the buffer, aka number of characters in buffer
* @bufpos: Position in the buffer
*
* Return: Number of characters printed
*/
int print_number(int n, char buffer[], int *buflen, int *bufpos)
{
int chars;
int sign_print;
chars = sign_print = 0;
if (n == 0)
{
buffer[*bufpos] = '0';
*bufpos += 1;
*buflen += 1;
if (*buflen == 1024)
write_buffer(buffer, buflen, bufpos);
return (1);
}
else if (n > 0)
n *= -1;
else
{
buffer[*bufpos] = '-';
*bufpos += 1;
*buflen += 1;
if (*buflen == 1024)
write_buffer(buffer, buflen, bufpos);
sign_print = 1;
}
if ((n / 10) != 0)
{
chars = print_number(((n / 10) * -1), buffer, buflen, bufpos);
}
buffer[*bufpos] = (n % 10) * -1 + '0';
*bufpos += 1;
*buflen += 1;
if (*buflen == 1024)
write_buffer(buffer, buflen, bufpos);
if (sign_print > 0)
chars += sign_print;
chars++;
return (chars);
}
/**
* print_Unum - Copy the given unsigned integer to the buffer to print
* @n: Integer to copy
* @buffer: Buffer to copy to
* @buflen: Current length of buffer, # of characters in buffer
* @bufpos: Current position in the buffer
*
* Return: Number of characters printed
*/
int print_Unum(unsigned int n, char buffer[], int *buflen, int *bufpos)
{
int numChars;
numChars = 0;
if (n == 0)
{
buffer[*bufpos] = '0';
*bufpos += 1;
*buflen += 1;
if (*buflen == 1024)
write_buffer(buffer, buflen, bufpos);
return (1);
}
if ((n / 10) != 0)
numChars = print_Unum((n / 10), buffer, buflen, bufpos);
buffer[*bufpos] = (n % 10) + '0';
*bufpos += 1;
*buflen += 1;
if (*buflen == 1024)
write_buffer(buffer, buflen, bufpos);
numChars++;
return (numChars);
}