-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathft_bzero.c
More file actions
70 lines (59 loc) · 1.6 KB
/
Copy pathft_bzero.c
File metadata and controls
70 lines (59 loc) · 1.6 KB
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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_bzero.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: ariyad <ariyad@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/22 11:19:30 by ariyad #+# #+# */
/* Updated: 2025/10/08 03:38:52 by ariyad ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
static void copy_eight(void *s)
{
long *l;
l = s;
*l = 0;
}
static void copy_four(void *s)
{
int *i;
i = s;
*i = 0;
}
static void copy_two(void *s)
{
short *sh;
sh = s;
*sh = 0;
}
static void copy_one(void *s)
{
char *c;
c = s;
*c = 0;
}
void ft_bzero(void *s, size_t n)
{
size_t i;
void (*f[4])(void *);
if (n == 0)
return ;
i = 0;
f[0] = copy_one;
f[1] = copy_two;
f[2] = copy_four;
f[3] = copy_eight;
while (i < n)
{
if (n - i >= sizeof(long))
(void)(f[3](s + i), i += sizeof(long));
if (n - i >= sizeof(int))
(void)(f[2](s + i), i += sizeof(int));
if (n - i >= sizeof(short))
(void)(f[1](s + i), i += sizeof(short));
else
(void)(f[0](s + i), i += sizeof(char));
}
}