-
Notifications
You must be signed in to change notification settings - Fork 0
/
helpers.c
120 lines (108 loc) · 1.89 KB
/
helpers.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "main.h"
/**
* _strlen - length
* @s: string
* Return: length string
*/
int _strlen(char *s)
{
int len = 0;
while (*(s + len) != '\0')
{
len++;
}
return (len);
}
/**
* _strncpy - copy a string into another
* @dest: string dest
* @src: string src
* @n: number of bytes to get from dest
*
* Return: pointer to string dest
*
*/
char *_strncpy(char *dest, char *src, int n)
{
int i;
for (i = 0; i < n && src[i] != '\0'; i++)
dest[i] = src[i];
for (; i < n; i++)
dest[i] = '\0';
return (dest);
}
/**
* convert_base - print number as chars converting to any base
*
* @m: main data structure
* @b: number base convert
* @num: number a convert
* @h: Hexadecimal Caps
*
* Return: none - void function
*/
void convert_base(struct main_buffer *m, int b, unsigned int num, int h)
{
unsigned int n = num, count = 1;
char *temp, buf[17], *ptr;
int i = 0, j = 0;
_strncpy(buf, (h == 0) ? "0123456789ABCDEF" : "0123456789abcdef", 17);
if (n == 0)
{
push_char(m, '0');
}
while (n /= b)
count++;
temp = malloc(sizeof(char) * (count + 1));
if (temp == NULL)
{
free(temp);
}
ptr = &temp[count], *ptr = '\0', ptr--;
while (num > 0)
{
*ptr = buf[num % b];
num = num / b;
ptr--, i++;
}
while (i > 0)
{
push_char(m, temp[j]);
j++, i--;
}
free(temp);
}
/**
* reverse_string - reverses a string
*
* @m_buffer: main data struct
* @str: str
*
* Return: none - void function
*/
void reverse_string(struct main_buffer *m_buffer, char *str)
{
int x = 0;
while (str[x])
x++;
for (x = x - 1; x >= 0; x--)
{
push_char(m_buffer, str[x]);
}
}
/**
* struct_init - init main data structure
*
* @m_buffer: main data struc
*
* Return: non - void finct
*/
void struct_init(struct main_buffer *m_buffer)
{
m_buffer->index = 0;
m_buffer->len = 0;
m_buffer->f = 0;
m_buffer->p = 0;
m_buffer->l = 0;
m_buffer->buffer_data = malloc(sizeof(char) * BUFFERSIZE);
}