Skip to content

Commit 1b56bc6

Browse files
author
Pathiti Boonprom
committed
meaw
1 parent 9183c75 commit 1b56bc6

21 files changed

+217
-79
lines changed

Makefile

+5-3
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ ft_isalpha.c ft_memchr.c ft_putchar_fd.c ft_strdup.c ft_strlen.c ft_str
1818
ft_atoi.c ft_isascii.c ft_memcmp.c ft_putendl_fd.c ft_striteri.c ft_strmapi.c ft_substr.c \
1919
ft_bzero.c ft_isdigit.c ft_memcpy.c ft_putnbr_fd.c ft_strjoin.c ft_strncmp.c \
2020
ft_calloc.c ft_isprint.c ft_memmove.c ft_putstr_fd.c ft_strlcat.c ft_strnstr.c ft_split.c \
21+
ft_tolower.c ft_toupper.c \
2122

22-
BONUS = ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c ft_lstadd_back.c \
23+
BONUS = ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c ft_lstadd_back.c ft_lstdelone.c \
24+
ft_lstclear.c ft_lstiter.c ft_lstmap.c \
2325

2426
CFLAGS = -Wall -Wextra -Werror
2527

@@ -36,7 +38,7 @@ $(NAME) : $(OBJS)
3638
gcc $(CFLAGS) -c $< -o $@
3739

3840
clean :
39-
rm -rf $(OBJS)
41+
rm -rf $(OBJS) $(BOBJS)
4042

4143
fclean : clean
4244
rm -rf $(NAME)
@@ -46,4 +48,4 @@ re : fclean all
4648
bonus : $(BOBJS)
4749
ar rcs $(NAME) $(BOBJS)
4850

49-
.PHONY : all clean fclean re
51+
.PHONY : all clean fclean re bonus

ft_atoi.c

+9-4
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,24 @@
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2022/06/27 20:47:58 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/20 14:03:07 by pboonpro ### ########.fr */
9+
/* Updated: 2022/09/30 01:15:23 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "libft.h"
1414

1515
int ft_atoi(const char *str)
1616
{
17-
int sum;
18-
int sign;
17+
long long int sum;
18+
int sign;
19+
int count;
1920

2021
sum = 0;
2122
sign = 1;
23+
count = 0;
2224
if (str)
2325
{
24-
while (*str == 32 || (*str >= 9 && *str <= 13))
26+
while (*str && (*str == 32 || (*str >= 9 && *str <= 13)))
2527
str++;
2628
if (*str == '+')
2729
str++;
@@ -34,6 +36,9 @@ int ft_atoi(const char *str)
3436
{
3537
sum = (sum * 10) + *str - '0';
3638
str++;
39+
count++;
40+
if (count > 19)
41+
return ((sign == -1) ? 0 : -1);
3742
}
3843
}
3944
return (sign * sum);

ft_calloc.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2022/07/02 20:31:13 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/19 00:39:46 by pboonpro ### ########.fr */
9+
/* Updated: 2022/10/01 04:16:39 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "libft.h"
1414

1515
void *ft_calloc(size_t count, size_t size)
1616
{
17-
unsigned char *ptr;
17+
void *ptr;
1818

1919
ptr = malloc(count * size);
20-
if (ptr == 0)
20+
if (!ptr)
2121
return (0);
22-
ft_bzero(ptr, count * count);
22+
ft_memset(ptr, 0, count * size);
2323
return (ptr);
2424
}

ft_lstadd_back.c

+11-8
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,25 @@
55
/* +:+ +:+ +:+ */
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
8-
/* Created: 2022/09/27 17:42:34 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/27 18:36:24 by pboonpro ### ########.fr */
8+
/* Created: 2022/09/29 22:10:25 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:55:19 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "libft.h"
1414

1515
void ft_lstadd_back(t_list **lst, t_list *new)
1616
{
17-
t_list *p;
17+
t_list *ptr;
1818

19-
if (*lst)
19+
if (lst == NULL || new == NULL)
20+
return ;
21+
if (*lst == NULL)
22+
*lst = new;
23+
else
2024
{
21-
p = ft_lstlast(*lst);
22-
p->next = new;
25+
ptr = ft_lstlast(*lst);
26+
ptr->next = new;
27+
new->next = NULL;
2328
}
24-
else
25-
*lst = new;
2629
}

ft_lstadd_front.c

+2-4
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@
55
/* +:+ +:+ +:+ */
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
8-
/* Created: 2022/09/27 17:22:34 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/27 17:33:16 by pboonpro ### ########.fr */
8+
/* Created: 2022/09/29 22:00:09 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:02:49 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "libft.h"
1414

1515
void ft_lstadd_front(t_list **lst, t_list *new)
1616
{
17-
if (!lst || !new)
18-
return ;
1917
new->next = *lst;
2018
*lst = new;
2119
}

ft_lstclear.c

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* ft_lstclear.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2022/09/29 22:19:31 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:23:25 by pboonpro ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "libft.h"
14+
15+
void ft_lstclear(t_list **lst, void (*del)(void*))
16+
{
17+
t_list *curr;
18+
t_list *after;
19+
20+
after = *lst;
21+
while (after)
22+
{
23+
curr = after;
24+
after = curr->next;
25+
ft_lstdelone(curr, del);
26+
}
27+
*lst = NULL;
28+
}

ft_lstdelone.c

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* ft_lstdelone.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2022/09/29 22:16:41 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:19:10 by pboonpro ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "libft.h"
14+
15+
void ft_lstdelone(t_list *lst, void (*del)(void*))
16+
{
17+
(*del)(lst->content);
18+
free(lst);
19+
lst = NULL;
20+
}

ft_lstiter.c

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* ft_lstiter.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2022/09/29 22:23:42 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:25:27 by pboonpro ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "libft.h"
14+
15+
void ft_lstiter(t_list *lst, void (*f)(void *))
16+
{
17+
if (!lst)
18+
return ;
19+
while (lst)
20+
{
21+
(*f)(lst->content);
22+
lst = lst->next;
23+
}
24+
}

ft_lstlast.c

+8-5
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
/* +:+ +:+ +:+ */
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
8-
/* Created: 2022/09/27 17:38:59 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/27 17:42:10 by pboonpro ### ########.fr */
8+
/* Created: 2022/09/29 22:06:27 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:54:18 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -15,8 +15,11 @@
1515
t_list *ft_lstlast(t_list *lst)
1616
{
1717
if (!lst)
18-
return (0);
19-
while (lst->next != 0)
20-
lst = lst->next;
18+
return (lst);
19+
else
20+
{
21+
while (lst->next != 0)
22+
lst = lst->next;
23+
}
2124
return (lst);
2225
}

ft_lstmap.c

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* ft_lstmap.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2022/09/29 22:25:49 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:34:05 by pboonpro ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "libft.h"
14+
15+
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
16+
{
17+
t_list *head;
18+
t_list *new;
19+
20+
if (!lst || !f)
21+
return (0);
22+
head = 0;
23+
while (lst)
24+
{
25+
new = ft_lstnew(f(lst->content));
26+
if (!new)
27+
{
28+
ft_lstclear(&new, del);
29+
return (NULL);
30+
}
31+
ft_lstadd_back(&head, new);
32+
lst = lst->next;
33+
}
34+
return (head);
35+
}

ft_lstnew.c

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
/* +:+ +:+ +:+ */
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
8-
/* Created: 2022/09/27 17:16:33 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/27 17:21:51 by pboonpro ### ########.fr */
8+
/* Created: 2022/09/29 21:55:52 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 21:59:52 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "libft.h"
1414

1515
t_list *ft_lstnew(void *content)
1616
{
17-
t_list *newl;
17+
t_list *new;
1818

19-
newl = (t_list *)malloc(sizeof(t_list));
20-
if (!newl)
21-
return (newl = NULL);
22-
newl->next = NULL;
23-
newl->content = content;
24-
return (newl);
19+
new = malloc(sizeof(t_list));
20+
if (!new)
21+
return (0);
22+
new->content = content;
23+
new->next = NULL;
24+
return (new);
2525
}

ft_lstsize.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
/* +:+ +:+ +:+ */
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
8-
/* Created: 2022/09/27 17:34:41 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/27 17:38:07 by pboonpro ### ########.fr */
8+
/* Created: 2022/09/29 22:03:10 by pboonpro #+# #+# */
9+
/* Updated: 2022/09/29 22:06:09 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

ft_memcmp.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2022/07/24 00:01:22 by pboonpro #+# #+# */
9-
/* Updated: 2022/09/20 11:46:04 by pboonpro ### ########.fr */
9+
/* Updated: 2022/09/29 23:34:24 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -20,12 +20,12 @@ int ft_memcmp(const void *s1, const void *s2, size_t n)
2020

2121
ps1 = (unsigned char *)s1;
2222
ps2 = (unsigned char *)s2;
23-
if (ps1 == 0 || ps2 == 0 || n == 0)
24-
return (0);
2523
i = 0;
26-
while (i + 1 < n && ps2[i] == ps1[i])
24+
while (i < n)
2725
{
26+
if (ps1[i] != ps2[i])
27+
return (ps1[i] - ps2[i]);
2828
i++;
2929
}
30-
return (ps1[i] - ps2[i]);
30+
return (0);
3131
}

ft_memcpy.c

+9-7
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,24 @@
66
/* By: pboonpro <marvin@42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2022/07/14 10:08:51 by pboonpro #+# #+# */
9-
/* Updated: 2022/07/25 20:09:59 by pboonpro ### ########.fr */
9+
/* Updated: 2022/09/29 23:24:02 by pboonpro ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "libft.h"
1414

1515
void *ft_memcpy(void *dest, const void *src, size_t n)
1616
{
17-
char *pdest;
18-
char *psrc;
19-
size_t i;
17+
char *pdest;
18+
const char *psrc;
19+
size_t i;
2020

21-
pdest = (char *)dest;
22-
psrc = (char *)src;
23-
if (*pdest == '\0' && *psrc == '\0')
21+
if (!dest && !src)
2422
return (0);
23+
if (n == 0)
24+
return (dest);
25+
pdest = (char *)dest;
26+
psrc = (const char *)src;
2527
i = 0;
2628
while (i < n)
2729
{

0 commit comments

Comments
 (0)