diff options
| -rw-r--r-- | Makefile | 17 | ||||
| -rw-r--r-- | ft_calloc.c | 12 | ||||
| -rw-r--r-- | ft_lstadd_back_bonus.c | 30 | ||||
| -rw-r--r-- | ft_lstadd_front_bonus.c | 19 | ||||
| -rw-r--r-- | ft_lstclear_bonus.c | 32 | ||||
| -rw-r--r-- | ft_lstdelone_bonus.c | 19 | ||||
| -rw-r--r-- | ft_lstiter_bonus.c | 25 | ||||
| -rw-r--r-- | ft_lstlast_bonus.c | 22 | ||||
| -rw-r--r-- | ft_lstmap_bonus.c | 43 | ||||
| -rw-r--r-- | ft_lstnew_bonus.c | 34 | ||||
| -rw-r--r-- | ft_lstsize_bonus.c | 28 | ||||
| -rw-r--r-- | ft_strdup.c | 4 | ||||
| -rw-r--r-- | ft_strnstr.c | 6 | ||||
| -rw-r--r-- | ft_substr.c | 8 | ||||
| -rw-r--r-- | libft.h | 89 |
15 files changed, 331 insertions, 57 deletions
@@ -37,8 +37,20 @@ SRC_FILES = ft_atoi.c \ ft_tolower.c \ ft_toupper.c \ + OBJ_FILES = $(SRC_FILES:.c=.o) +BONUS_SRC = ft_lstnew_bonus.c \ + ft_lstadd_front_bonus.c \ + ft_lstsize_bonus.c \ + ft_lstlast_bonus.c \ + ft_lstadd_back_bonus.c \ + ft_lstdelone_bonus.c \ + ft_lstclear_bonus.c \ + ft_lstiter_bonus.c \ + ft_lstmap_bonus.c + +BONUS_OBJ = $(BONUS_SRC:.c=.o) all: $(NAME) @@ -49,6 +61,9 @@ clean: rm -f $(OBJ_FILES) fclean: clean - -rm -f $(NAME) + rm -f $(NAME) re: fclean all + +bonus: $(BONUS_OBJ) + ar rcs $(NAME) $(BONUS_OBJ) diff --git a/ft_calloc.c b/ft_calloc.c index 2b711d9..0dcc434 100644 --- a/ft_calloc.c +++ b/ft_calloc.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/06 19:45:56 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 13:17:31 by dkaiser ### ########.fr */ +/* Updated: 2024/03/10 15:34:06 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,17 +15,9 @@ void *ft_calloc(size_t count, size_t size) { void *result; - size_t i; result = malloc(count * size); if (result) - { - i = 0; - while (i < count * size) - { - *((char *)result + i) = 0; - i++; - } - } + ft_bzero(result, count * size); return (result); } diff --git a/ft_lstadd_back_bonus.c b/ft_lstadd_back_bonus.c new file mode 100644 index 0000000..c4fb686 --- /dev/null +++ b/ft_lstadd_back_bonus.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 16:03:26 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 18:00:17 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_back(t_list **lst, t_list *new) +{ + t_list *current; + + if (!*lst) + { + *lst = new; + return ; + } + current = *lst; + while (current->next) + { + current = current->next; + } + current->next = new; +} diff --git a/ft_lstadd_front_bonus.c b/ft_lstadd_front_bonus.c new file mode 100644 index 0000000..9c4c30e --- /dev/null +++ b/ft_lstadd_front_bonus.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 15:14:01 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 15:40:48 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_front(t_list **lst, t_list *new) +{ + new->next = *lst; + *lst = new; +} diff --git a/ft_lstclear_bonus.c b/ft_lstclear_bonus.c new file mode 100644 index 0000000..9af095e --- /dev/null +++ b/ft_lstclear_bonus.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 16:26:23 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 16:35:46 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void *)) +{ + t_list *current; + t_list *next; + + if (*lst) + { + current = *lst; + while (current->next) + { + next = current->next; + ft_lstdelone(current, del); + current = next; + } + ft_lstdelone(current, del); + } + *lst = NULL; +} diff --git a/ft_lstdelone_bonus.c b/ft_lstdelone_bonus.c new file mode 100644 index 0000000..9dd78c8 --- /dev/null +++ b/ft_lstdelone_bonus.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 16:20:31 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 16:36:18 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void *)) +{ + del(lst->content); + free(lst); +} diff --git a/ft_lstiter_bonus.c b/ft_lstiter_bonus.c new file mode 100644 index 0000000..73efbe9 --- /dev/null +++ b/ft_lstiter_bonus.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 16:39:47 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 16:41:07 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + if (!lst) + return ; + while (lst->next) + { + f(lst->content); + lst = lst->next; + } + f(lst->content); +} diff --git a/ft_lstlast_bonus.c b/ft_lstlast_bonus.c new file mode 100644 index 0000000..e0b4d6d --- /dev/null +++ b/ft_lstlast_bonus.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 15:54:05 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 16:36:04 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + if (!lst) + return (0); + while (lst->next) + lst = lst->next; + return (lst); +} diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c new file mode 100644 index 0000000..91eabfc --- /dev/null +++ b/ft_lstmap_bonus.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 16:45:21 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 19:03:00 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *result; + t_list *new; + + if (!lst || !f || !del) + return (NULL); + new = ft_lstnew(f(lst->content)); + if (!new) + { + free(new); + return (NULL); + } + result = new; + lst = lst->next; + while (lst) + { + new->next = ft_lstnew(f(lst->content)); + if (!new->next) + { + ft_lstclear(&new, del); + return (NULL); + } + new = new->next; + lst = lst->next; + } + // new->next = NULL; + return (result); +} diff --git a/ft_lstnew_bonus.c b/ft_lstnew_bonus.c new file mode 100644 index 0000000..a8f43ce --- /dev/null +++ b/ft_lstnew_bonus.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 14:57:39 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 15:40:57 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *result; + + result = malloc(sizeof(t_list)); + if (!result) + return (0); + result->content = content; + result->next = NULL; + return (result); +} + +/* #include <stdio.h> */ +/* int main() { */ +/* t_list l; */ +/* char s[] = "Hello"; */ + +/* l = *ft_lstnew(&s); */ +/* printf("%s\n", l.content); */ +/* } */ diff --git a/ft_lstsize_bonus.c b/ft_lstsize_bonus.c new file mode 100644 index 0000000..c91b0c9 --- /dev/null +++ b/ft_lstsize_bonus.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/03/10 15:35:38 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 16:36:09 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int len; + + if (!lst) + return (0); + len = 1; + while (lst->next) + { + lst = lst->next; + len++; + } + return (len); +} diff --git a/ft_strdup.c b/ft_strdup.c index 2f59166..c7a6591 100644 --- a/ft_strdup.c +++ b/ft_strdup.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/06 19:54:16 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 13:59:13 by dkaiser ### ########.fr */ +/* Updated: 2024/03/10 15:28:58 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ char *ft_strdup(const char *s1) if (!result) return (0); result[len] = '\0'; - while (--len) + while (len--) result[len] = s1[len]; return (result); } diff --git a/ft_strnstr.c b/ft_strnstr.c index 54868d4..453af18 100644 --- a/ft_strnstr.c +++ b/ft_strnstr.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/06 16:07:54 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 13:16:58 by dkaiser ### ########.fr */ +/* Updated: 2024/03/10 14:42:21 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ char *ft_strnstr(const char *haystack, const char *needle, size_t len) size_t i; size_t k; - if (len < 0 || (!haystack[0] && needle[0])) + if (len < 0 || (!*haystack && *needle)) return (0); i = 0; if (*needle == '\0' || needle == haystack) @@ -26,9 +26,7 @@ char *ft_strnstr(const char *haystack, const char *needle, size_t len) { k = 0; while (haystack[i + k] && haystack[i + k] == needle[k] && i + k < len) - { k++; - } if (!needle[k]) return ((char *)haystack + i); i++; diff --git a/ft_substr.c b/ft_substr.c index 4ac8003..81ca8c6 100644 --- a/ft_substr.c +++ b/ft_substr.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/06 21:58:31 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 14:01:27 by dkaiser ### ########.fr */ +/* Updated: 2024/03/10 15:39:38 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,9 @@ char *ft_substr(char const *s, unsigned int start, size_t len) { - unsigned int slen; - size_t i; - char *result; + unsigned int slen; + size_t i; + char *result; slen = ft_strlen(s); if (start >= slen) @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2024/03/06 21:38:24 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 13:26:25 by dkaiser ### ########.fr */ +/* Created: 2024/03/10 16:37:54 by dkaiser #+# #+# */ +/* Updated: 2024/03/10 17:17:50 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,38 +17,55 @@ # include <string.h> # include <unistd.h> -int ft_isalpha(int c); -int ft_isdigit(int c); -int ft_isalnum(int c); -int ft_isprint(int c); -int ft_isascii(int c); -int ft_strlen(const char *str); -void *ft_memset(void *b, int c, size_t len); -void ft_bzero(void *s, size_t n); -void *ft_memcpy(void *dst, const void *src, size_t n); -void *ft_memmove(void *dst, const void *src, size_t len); -size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); -size_t ft_strlcat(char *dst, const char *src, size_t dstsize); -int ft_toupper(int c); -int ft_tolower(int c); -char *ft_strchr(const char *s, int c); -char *ft_strrchr(const char *s, int c); -int ft_strncmp(const char *s1, const char *s2, size_t n); -void *ft_memchr(const void *s, int c, size_t n); -int ft_memcmp(const void *s1, const void *s2, size_t n); -char *ft_strnstr(const char *haystack, const char *needle, size_t len); -int ft_atoi(const char *str); -void *ft_calloc(size_t count, size_t size); -char *ft_strdup(const char *s1); -char *ft_substr(char const *s, unsigned int start, size_t len); -char *ft_strjoin(char const *s1, char const *s2); -char *ft_strtrim(char const *s1, char const *set); -char **ft_split(char const *s, char c); -char *ft_itoa(int n); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -void ft_striteri(char *s, void (*f)(unsigned int, char *)); -void ft_putchar_fd(char c, int fd); -void ft_putstr_fd(char *s, int fd); -void ft_putendl_fd(char *s, int fd); -void ft_putnbr_fd(int n, int fd); +int ft_isalpha(int c); +int ft_isdigit(int c); +int ft_isalnum(int c); +int ft_isprint(int c); +int ft_isascii(int c); +int ft_strlen(const char *str); +void *ft_memset(void *b, int c, size_t len); +void ft_bzero(void *s, size_t n); +void *ft_memcpy(void *dst, const void *src, size_t n); +void *ft_memmove(void *dst, const void *src, size_t len); +size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); +size_t ft_strlcat(char *dst, const char *src, size_t dstsize); +int ft_toupper(int c); +int ft_tolower(int c); +char *ft_strchr(const char *s, int c); +char *ft_strrchr(const char *s, int c); +int ft_strncmp(const char *s1, const char *s2, size_t n); +void *ft_memchr(const void *s, int c, size_t n); +int ft_memcmp(const void *s1, const void *s2, size_t n); +char *ft_strnstr(const char *haystack, const char *needle, + size_t len); +int ft_atoi(const char *str); +void *ft_calloc(size_t count, size_t size); +char *ft_strdup(const char *s1); +char *ft_substr(char const *s, unsigned int start, size_t len); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strtrim(char const *s1, char const *set); +char **ft_split(char const *s, char c); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +void ft_striteri(char *s, void (*f)(unsigned int, char *)); +void ft_putchar_fd(char c, int fd); +void ft_putstr_fd(char *s, int fd); +void ft_putendl_fd(char *s, int fd); +void ft_putnbr_fd(int n, int fd); + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; +t_list *ft_lstnew(void *content); +void ft_lstadd_front(t_list **lst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **lst, t_list *new); +void ft_lstdelone(t_list *lst, void (*del)(void *)); +void ft_lstclear(t_list **lst, void (*del)(void *)); +void ft_lstiter(t_list *lst, void (*f)(void *)); +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), + void (*del)(void *)); #endif |
