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)
rm -f $(OBJ_FILES)
fclean: clean
- -rm -f $(NAME)
+ rm -f $(NAME)
re: fclean all
+
+bonus: $(BONUS_OBJ)
+ ar rcs $(NAME) $(BONUS_OBJ)
/* 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 */
/* */
/* ************************************************************************** */
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);
}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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;
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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;
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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;
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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);
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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);
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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);
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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);
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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); */
+/* } */
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* 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);
+}
/* 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 */
/* */
/* ************************************************************************** */
if (!result)
return (0);
result[len] = '\0';
- while (--len)
+ while (len--)
result[len] = s1[len];
return (result);
}
/* 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 */
/* */
/* ************************************************************************** */
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)
{
k = 0;
while (haystack[i + k] && haystack[i + k] == needle[k] && i + k < len)
- {
k++;
- }
if (!needle[k])
return ((char *)haystack + i);
i++;
/* 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 */
/* */
/* ************************************************************************** */
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)
/* +:+ +:+ +:+ */
/* 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 */
/* */
/* ************************************************************************** */
# 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