]> Untitled Git - axy/ft/libft.git/commitdiff
Finished up and bonuses
author= <=>
Wed, 29 Oct 2025 12:34:04 +0000 (13:34 +0100)
committer= <=>
Wed, 29 Oct 2025 12:34:04 +0000 (13:34 +0100)
34 files changed:
Makefile
ft_atoi.c
ft_itoa.c [moved from ft_str3.c with 50% similarity]
ft_lstadd_back.c [new file with mode: 0644]
ft_lstadd_front.c [new file with mode: 0644]
ft_lstclear.c [new file with mode: 0644]
ft_lstdelone.c [new file with mode: 0644]
ft_lstiter.c [new file with mode: 0644]
ft_lstlast.c [new file with mode: 0644]
ft_lstmap.c [new file with mode: 0644]
ft_lstnew.c [new file with mode: 0644]
ft_lstsize.c [new file with mode: 0644]
ft_mem1.c [deleted file]
ft_memchr.c
ft_memcmp.c
ft_memcpy.c
ft_memmove.c
ft_memset.c
ft_putchar_fd.c [new file with mode: 0644]
ft_putendl_fd.c [new file with mode: 0644]
ft_putnbr_fd.c [new file with mode: 0644]
ft_putstr_fd.c [new file with mode: 0644]
ft_split.c
ft_str1.c [deleted file]
ft_str2.c [deleted file]
ft_strdup.c
ft_striteri.c [new file with mode: 0644]
ft_strlcat.c
ft_strlcpy.c
ft_strlen.c
ft_strmapi.c [moved from ft_mem2.c with 53% similarity]
ft_strrchr.c
ft_strtrim.c
libft.h

index 23f219939554bbd30f448ab699e3052e4328dd5d..13f073ac50802e737d7b3ad98e655052f284c99e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,13 @@
 NAME=libft.a
 
-SRCS=ft_char1.c ft_char2.c ft_mem1.c  ft_mem2.c ft_str1.c  ft_str2.c ft_str3.c ft_split.c
+SRCS=ft_calloc.c ft_strnstr.c ft_isdigit.c ft_strrchr.c ft_strncmp.c ft_strjoin.c ft_toupper.c ft_tolower.c ft_strlcat.c ft_strchr.c ft_strdup.c ft_atoi.c ft_strtrim.c ft_substr.c ft_split.c ft_isalpha.c ft_isascii.c ft_isprint.c ft_isalnum.c ft_memset.c ft_bzero.c ft_memcpy.c ft_memmove.c ft_memchr.c ft_strlen.c ft_strlcpy.c ft_memcmp.c ft_itoa.c ft_strmapi.c ft_striteri.c ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c
+
+BONUS_SRCS=ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c ft_lstmap.c
 
 OBJS=${SRCS:.c=.o}
 
+BONUS_OBJS=${BONUS_SRCS:.c=.o}
+
 CFLAGS=-Wall -Wextra -Werror
 
 CC=cc
@@ -16,6 +20,9 @@ all : ${NAME}
 ${NAME} : ${OBJS}
        ar -rcs $@ $^
 
+bonus : ${BONUS_OBJS}
+       ar -rcs ${NAME} $^
+
 clean : 
        rm -f ${OBJS}
 
index ba87aa9a7cf773dce1db5c3a5df2786fd6778739..b31be33b38ffe572d08e9f5373e9c06ac3bee498 100644 (file)
--- a/ft_atoi.c
+++ b/ft_atoi.c
@@ -6,11 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 10:05:22 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 10:06:56 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:13:14 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
-#include <libft.h>
+#include <stdbool.h>
+#include "libft.h"
 
 static bool    ft_isspace(char c)
 {
similarity index 50%
rename from ft_str3.c
rename to ft_itoa.c
index e9403a627298aa7b77b731bd3fef13e473dc7fa7..2ea2653eeb9e1956906b25d37bf2038937772d85 100644 (file)
--- a/ft_str3.c
+++ b/ft_itoa.c
@@ -1,54 +1,54 @@
 /* ************************************************************************** */
 /*                                                                            */
 /*                                                        :::      ::::::::   */
-/*   ft_str3.c                                          :+:      :+:    :+:   */
+/*   ft_itoa.c                                          :+:      :+:    :+:   */
 /*                                                    +:+ +:+         +:+     */
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
-/*   Created: 2025/10/28 09:18:20 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:40:51 by agilliar         ###   ########.fr       */
+/*   Created: 2025/10/29 10:19:15 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 10:34:53 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
-#include "libft.h"
+#include <stddef.h>
 #include <stdlib.h>
-#include <stdbool.h>
 
-char   *ft_strjoin(const char *s1, const char *s2)
+static void    ft_itoa_visit(long n, void (*f)(void *, char), void *f_dat)
 {
-       size_t  l1;
-       size_t  l2;
-       char    *res;
+       if (n < 0)
+       {
+               f(f_dat, '-');
+               return (ft_itoa_visit(-n, f, f_dat));
+       }
+       if (n > 9)
+               ft_itoa_visit(n / 10, f, f_dat);
+       f(f_dat, '0' + n % 10);
+}
 
-       l1 = ft_strlen(s1);
-       l2 = ft_strlen(s2);
-       res = malloc(l1 + l2 + 1);
-       if (!res)
-               return (res);
-       ft_memcpy(res, s1, l1);
-       ft_memcpy(&res[l1], s2, l2);
-       res[l1 + l2] = '\0';
-       return (res);
+static void    ft_itoa_count(size_t *count, char _c)
+{
+       (void) _c;
+       (*count)++;
 }
 
-static bool    ft_char_in_set(char c, const char *set)
+static void    ft_itoa_write(char **buf, char c)
 {
-       while (*set && *set != c)
-               set++;
-       return (*set == c);
+       *((*buf)++) = c;
 }
 
-char   *ft_strtrim(const char *s1, const char *set)
+char   *ft_itoa(int n)
 {
-       size_t  i;
        size_t  len;
+       char    *res;
+       char    *dat;
 
-       while (*s1 && ft_char_in_set(*s1, set))
-               s1++;
-       i = 0;
-       len = 0;
-       while (s1[i])
-               if (!ft_char_in_set(s1[i++], set))
-                       len = i;
-       return (ft_substr(s1, 0, len));
+       len = 1;
+       ft_itoa_visit(n, (void (*)(void *, char))ft_itoa_count, &len);
+       res = malloc(len);
+       if (!res)
+               return (res);
+       dat = res;
+       ft_itoa_visit(n, (void (*)(void *, char)) ft_itoa_write, &dat);
+       *dat = '\0';
+       return (res);
 }
diff --git a/ft_lstadd_back.c b/ft_lstadd_back.c
new file mode 100644 (file)
index 0000000..d0881fc
--- /dev/null
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstadd_back.c                                   :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 12:55:01 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 12:57:51 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void   ft_lstadd_back(t_list **lst, t_list *new)
+{
+       if (!(*lst))
+               *lst = new;
+       else
+               ft_lstadd_back(&(*lst)->next, new);
+}
diff --git a/ft_lstadd_front.c b/ft_lstadd_front.c
new file mode 100644 (file)
index 0000000..36e03c1
--- /dev/null
@@ -0,0 +1,19 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstadd_front.c                                  :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 12:09:55 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 12:14:27 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void   ft_lstadd_front(t_list **lst, t_list *new)
+{
+       new->next = *lst;
+       *lst = new;
+}
diff --git a/ft_lstclear.c b/ft_lstclear.c
new file mode 100644 (file)
index 0000000..caeb50b
--- /dev/null
@@ -0,0 +1,26 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstclear.c                                      :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 13:03:33 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 13:10:12 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <stdlib.h>
+#include "libft.h"
+
+void   ft_lstclear(t_list **lst, void (*del)(void *))
+{
+       t_list  *lst_next;
+
+       if (!*lst)
+               return ;
+       lst_next = (*lst)->next;
+       ft_lstdelone(*lst, del);
+       *lst = lst_next;
+       ft_lstclear(lst, del);
+}
diff --git a/ft_lstdelone.c b/ft_lstdelone.c
new file mode 100644 (file)
index 0000000..9bb8d7f
--- /dev/null
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstdelone.c                                     :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 12:58:54 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 13:00:44 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stdlib.h>
+
+void   ft_lstdelone(t_list *lst, void (*del)(void *))
+{
+       del(lst->content);
+       free(lst);
+}
diff --git a/ft_lstiter.c b/ft_lstiter.c
new file mode 100644 (file)
index 0000000..55a154d
--- /dev/null
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstiter.c                                       :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 13:10:47 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 13:13:22 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void   ft_lstiter(t_list *lst, void (*f)(void *))
+{
+       if (!lst)
+               return ;
+       f(lst->content);
+       ft_lstiter(lst->next, f);
+}
diff --git a/ft_lstlast.c b/ft_lstlast.c
new file mode 100644 (file)
index 0000000..8c14481
--- /dev/null
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstlast.c                                       :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 12:18:37 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 12:21:34 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+t_list *ft_lstlast(t_list *lst)
+{
+       if (!lst || !lst->next)
+               return (lst);
+       else
+               return (ft_lstlast(lst->next));
+}
diff --git a/ft_lstmap.c b/ft_lstmap.c
new file mode 100644 (file)
index 0000000..5ead31d
--- /dev/null
@@ -0,0 +1,35 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstmap.c                                        :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 13:13:59 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 13:32:14 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <stdlib.h>
+#include "libft.h"
+
+t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
+{
+       t_list  *res;
+       void    *content;
+
+       if (!lst)
+               return (NULL);
+       content = f(lst->content);
+       res = ft_lstnew(content);
+       if (!res)
+               return (del(content), NULL);
+       if (!lst->next)
+               return (res);
+       res->next = ft_lstmap(lst->next, f, del);
+       if (res->next)
+               return (res);
+       del(res->content);
+       free(res);
+       return (NULL);
+}
diff --git a/ft_lstnew.c b/ft_lstnew.c
new file mode 100644 (file)
index 0000000..0b6da10
--- /dev/null
@@ -0,0 +1,26 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstnew.c                                        :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 12:05:45 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 12:07:12 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stdlib.h>
+
+t_list *ft_lstnew(void *content)
+{
+       t_list  *res;
+
+       res = malloc(sizeof(t_list));
+       if (!res)
+               return (res);
+       res->next = 0;
+       res->content = content;
+       return (res);
+}
diff --git a/ft_lstsize.c b/ft_lstsize.c
new file mode 100644 (file)
index 0000000..869a15e
--- /dev/null
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_lstsize.c                                       :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 12:15:01 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 12:16:55 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+int    ft_lstsize(t_list *lst)
+{
+       if (lst)
+               return (ft_lstsize(lst->next) + 1);
+       else
+               return (0);
+}
diff --git a/ft_mem1.c b/ft_mem1.c
deleted file mode 100644 (file)
index 68231e8..0000000
--- a/ft_mem1.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* ************************************************************************** */
-/*                                                                            */
-/*                                                        :::      ::::::::   */
-/*   ft_mem1.c                                          :+:      :+:    :+:   */
-/*                                                    +:+ +:+         +:+     */
-/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
-/*                                                +#+#+#+#+#+   +#+           */
-/*   Created: 2025/10/27 12:08:42 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:19:54 by agilliar         ###   ########.fr       */
-/*                                                                            */
-/* ************************************************************************** */
-
-#include "libft.h"
-
-void   *ft_memset(void *s, int c, size_t n)
-{
-       size_t  i;
-
-       i = 0;
-       while (i < n)
-               ((unsigned char *) s)[i++] = c;
-       return (s);
-}
-
-void   *ft_bzero(void *s, size_t n)
-{
-       return (ft_memset(s, '\0', n));
-}
-
-void   *ft_memcpy(void *restrict dest, const void *src, size_t n)
-{
-       size_t  i;
-
-       i = 0;
-       while (i < n)
-       {
-               ((unsigned char *)dest)[i] = ((unsigned char *)src)[i];
-               i++;
-       }
-       return (dest);
-}
-
-void   *ft_memmove(void *dest, const void *src, size_t n)
-{
-       size_t  i;
-
-       if (dest < src)
-       {
-               i = 0;
-               while (i < n)
-               {
-                       ((unsigned char *)dest)[i] = ((unsigned char *)src)[i];
-                       i++;
-               }
-       }
-       else
-               while (n--)
-                       ((unsigned char *)dest)[n] = ((unsigned char *)src)[n];
-       return (dest);
-}
-
-void   *ft_memchr(const void *s, int c, size_t n)
-{
-       size_t  i;
-
-       i = 0;
-       while (i < n)
-       {
-               if (((unsigned char *)s)[i] == (unsigned char)c)
-                       return ((void *)&((unsigned char *)s)[i]);
-               i++;
-       }
-       return (NULL);
-}
index e042f5886d68c7f1e8afc201a257ed58bea9042b..b8e182042d5db65a6fa47df6fc2cb98e2dba457d 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:48:41 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:48:43 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:14:45 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 void   *ft_memchr(const void *s, int c, size_t n)
 {
        size_t  i;
index c960c157e536142954bf5d50ed62476ca6ef4a06..2327d565f118d21fa3642bd71bd6457c737a6d69 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:51:58 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:52:31 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:15:40 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 int    ft_memcmp(const void *s1, const void *s2, size_t n)
 {
        size_t  i;
index 1d9d244bdd0ab210469f6ddd1b93d93f83418177..99619a260116c7de5cb3d3cee6d7f284198b8a1b 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:48:05 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:48:15 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:13:48 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 void   *ft_memcpy(void *restrict dest, const void *src, size_t n)
 {
        size_t  i;
index 7b5ddd08bca22f65ccbf0bb5c0eceb92a9ab60dd..a9bb4e8d1b9c624a146f7e3aff9c8aa3e369388b 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:48:19 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:48:31 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:14:18 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 void   *ft_memmove(void *dest, const void *src, size_t n)
 {
        size_t  i;
index 7272039172caa020efd038b14718d58b93c8886d..f0815fa4b92119a2bc442a3a863144266af19be1 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:47:17 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:47:32 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:13:36 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 void   *ft_memset(void *s, int c, size_t n)
 {
        size_t  i;
diff --git a/ft_putchar_fd.c b/ft_putchar_fd.c
new file mode 100644 (file)
index 0000000..7805cf3
--- /dev/null
@@ -0,0 +1,18 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_putchar_fd.c                                    :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 10:52:35 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 10:54:15 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <unistd.h>
+
+void   ft_putchar_fd(char c, int fd)
+{
+       write(fd, &c, 1);
+}
diff --git a/ft_putendl_fd.c b/ft_putendl_fd.c
new file mode 100644 (file)
index 0000000..7f5cdee
--- /dev/null
@@ -0,0 +1,19 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_putendl_fd.c                                    :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 10:57:18 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 10:58:07 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void   ft_putendl_fd(char *s, int fd)
+{
+       ft_putstr_fd(s, fd);
+       ft_putchar_fd('\n', fd);
+}
diff --git a/ft_putnbr_fd.c b/ft_putnbr_fd.c
new file mode 100644 (file)
index 0000000..2599618
--- /dev/null
@@ -0,0 +1,35 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_putnbr_fd.c                                     :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 10:59:59 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 11:12:16 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+static void    ft_itoa_visit(long n, void (*f)(void *, char), void *f_dat)
+{
+       if (n < 0)
+       {
+               f(f_dat, '-');
+               return (ft_itoa_visit(-n, f, f_dat));
+       }
+       if (n > 9)
+               ft_itoa_visit(n / 10, f, f_dat);
+       f(f_dat, '0' + n % 10);
+}
+
+void   ft_putnbr_fd_write(int *fd, char c)
+{
+       ft_putchar_fd(c, *fd);
+}
+
+void   ft_putnbr_fd(int n, int fd)
+{
+       ft_itoa_visit(n, (void (*)(void *, char))ft_putnbr_fd_write, &fd);
+}
diff --git a/ft_putstr_fd.c b/ft_putstr_fd.c
new file mode 100644 (file)
index 0000000..90e5b5f
--- /dev/null
@@ -0,0 +1,19 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_putstr_fd.c                                     :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 10:55:24 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 10:56:44 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void   ft_putstr_fd(char *s, int fd)
+{
+       while (*s)
+               ft_putchar_fd(*(s++), fd);
+}
index b4baa4f81c4515b9f1ebd40aaef61e3ff4420cd7..765d7c75da5bd077b45daf9f52c4af1873dc1189 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/28 12:08:04 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/28 13:20:17 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:37:49 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -34,6 +34,9 @@ static char   **ft_split_cleanup(char **res, size_t len)
        return (NULL);
 }
 
+/*
+       Weird Formatting from norminette on that else, for some reason
+*/
 static char    **ft_split_with(char **res, const char *s, char c)
 {
        size_t  i;
@@ -42,6 +45,7 @@ static char   **ft_split_with(char **res, const char *s, char c)
                return (res);
        i = 0;
        while (*s)
+       {
                if (ft_strlen_term(s, c) == 0)
                        s++;
                else
@@ -52,6 +56,7 @@ static char   **ft_split_with(char **res, const char *s, char c)
                        i++;
                        s += ft_strlen_term(s, c);
                }
+       }
        res[i] = NULL;
        return (res);
 }
@@ -64,6 +69,7 @@ char  **ft_split(const char *s, char c)
        i = 0;
        len = 1;
        while (s[i])
+       {
                if (ft_strlen_term(&s[i], c) == 0)
                        i++;
                else
@@ -71,5 +77,6 @@ char  **ft_split(const char *s, char c)
                        i += ft_strlen_term(&s[i], c);
                        len++;
                }
+       }
        return (ft_split_with(malloc(sizeof(char *) * len), s, c));
 }
diff --git a/ft_str1.c b/ft_str1.c
deleted file mode 100644 (file)
index 9ef1297..0000000
--- a/ft_str1.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* ************************************************************************** */
-/*                                                                            */
-/*                                                        :::      ::::::::   */
-/*   ft_str1.c                                          :+:      :+:    :+:   */
-/*                                                    +:+ +:+         +:+     */
-/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
-/*                                                +#+#+#+#+#+   +#+           */
-/*   Created: 2025/10/27 12:11:26 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:28:34 by agilliar         ###   ########.fr       */
-/*                                                                            */
-/* ************************************************************************** */
-
-#include "libft.h"
-#include <stdbool.h>
-
-size_t ft_strlen(const char *s)
-{
-       size_t  i;
-
-       i = 0;
-       while (s[i] != '\0')
-               i++;
-       return (i);
-}
-
-size_t ft_strlcpy(char *dest, const char *src, size_t size)
-{
-       size_t  len;
-       size_t  i;
-
-       len = 0;
-       while (src[len] != '\0')
-               len++;
-       if (size == 0)
-               return (len);
-       i = 0;
-       while (i < len && i < size - 1)
-               *dest++ = src[i++];
-       *dest = '\0';
-       return (len);
-}
-
-size_t ft_strlcat(char *dest, const char *src, size_t size)
-{
-       size_t  src_len;
-       size_t  dest_len;
-       size_t  i;
-
-       src_len = 0;
-       while (src[src_len])
-               src_len++;
-       dest_len = 0;
-       while (dest_len < size && dest[dest_len])
-               dest_len++;
-       i = 0;
-       while (dest_len + i + 1 < size && i < src_len)
-       {
-               dest[dest_len + i] = src[i];
-               i++;
-       }
-       if (dest_len != size)
-               dest[dest_len + i] = '\0';
-       return (src_len + dest_len);
-}
-
-char   *ft_strchr(const char *s, int c)
-{
-       while (*s != (char)c && *s != '\0')
-               s++;
-       if (*s == (char)c)
-               return ((char *) s);
-       return (NULL);
-}
-
-char   *ft_strrchr(const char *s, int c)
-{
-       char    *res;
-
-       res = (char *) s;
-       while (true)
-       {
-               if (*s == (char)c)
-                       res = (char *) s;
-               if (!*s)
-                       break;
-               s++;
-       }
-       if (*res == (char)c)
-               return (res);
-       return (NULL);
-}
diff --git a/ft_str2.c b/ft_str2.c
deleted file mode 100644 (file)
index 1c8cdfe..0000000
--- a/ft_str2.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* ************************************************************************** */
-/*                                                                            */
-/*                                                        :::      ::::::::   */
-/*   ft_str2.c                                          :+:      :+:    :+:   */
-/*                                                    +:+ +:+         +:+     */
-/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
-/*                                                +#+#+#+#+#+   +#+           */
-/*   Created: 2025/10/27 13:31:21 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:36:36 by agilliar         ###   ########.fr       */
-/*                                                                            */
-/* ************************************************************************** */
-
-#include "libft.h"
-#include <stdbool.h>
-#include <stdlib.h>
-
-int    ft_strncmp(const char *s1, const char *s2, size_t n)
-{
-       unsigned int    idx;
-
-       if (n == 0)
-               return (0);
-       idx = 0;
-       while (s1[idx] != '\0' && s1[idx] == s2[idx] && idx < n - 1)
-               idx++;
-       return ((unsigned char) s1[idx] - (unsigned char) s2[idx]);
-}
-
-char   *ft_strnstr(const char *big, const char *little, size_t len)
-{
-       size_t  i;
-       size_t  j;
-
-       i = 0;
-       j = 0;
-       while (little[i] && i + j < len && big[i + j])
-       {
-               if (big[i + j] != little[i])
-               {
-                       i = 0;
-                       j++;
-               }
-               else
-                       i++;
-       }
-       if (little[i])
-               return (NULL);
-       return ((char *)&big[j]);
-}
-
-static bool    ft_isspace(char c)
-{
-       return (c == ' ' || (c >= '\t' && c <= '\r'));
-}
-
-int    ft_atoi(const char *nptr)
-{
-       int     sign;
-       int     res;
-
-       sign = 1;
-       res = 0;
-       while (ft_isspace(*nptr))
-               nptr++;
-       if (*nptr == '-')
-               sign = -1;
-       else if (*nptr != '+')
-               nptr--;
-       nptr++;
-       while (ft_isdigit(*nptr))
-       {
-               res *= 10;
-               res += sign * (*nptr - '0');
-               nptr++;
-       }
-       return (res);
-}
-
-char   *ft_substr(const char *s, unsigned int start, size_t len)
-{
-       size_t  s_len;
-       char    *res;
-
-       s_len = ft_strlen(s);
-       if (start > s_len)
-               start = s_len;
-       if (len > s_len - start)
-               len = s_len - start;
-       res = malloc(len + 1);
-       if (!res)
-               return (res);
-       ft_memcpy(res, s + start, len);
-       res[len] = '\0';
-       return (res);
-}
index 7fc02c54f9b63e970b0020bcdc3a5853bee86554..3901588510285aeb5fddabcf69f9c7143944f631 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 10:01:04 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 10:02:35 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:12:32 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -14,5 +14,5 @@
 
 char   *ft_strdup(char *src)
 {
-       return (ft_substr(str, 0, ft_strlen(str)));
+       return (ft_substr(src, 0, ft_strlen(src)));
 }
diff --git a/ft_striteri.c b/ft_striteri.c
new file mode 100644 (file)
index 0000000..c335ce9
--- /dev/null
@@ -0,0 +1,25 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   ft_striteri.c                                      :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/29 10:48:45 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 10:51:20 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+void   ft_striteri(char *s, void (*f)(unsigned int, char*))
+{
+       size_t  i;
+
+       i = 0;
+       while (s[i])
+       {
+               f(i, &s[i]);
+               i++;
+       }
+}
index 60f0a7254fe99d626325c74957124b63a24aec61..621b347d3ff1fd26302224f7268a7d4e38ce1634 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:49:32 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:49:39 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:12:16 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 size_t ft_strlcat(char *dest, const char *src, size_t size)
 {
        size_t  src_len;
index 7f7d19e632b1b4ca74d078eb5d568359214aad63..e46eeeaa227d2325ef3d08c53be69c7ae1a5024b 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:49:19 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:49:27 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:15:19 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 size_t ft_strlcpy(char *dest, const char *src, size_t size)
 {
        size_t  len;
index 9854e720c7f8a5529d403e13bfa62ca63bfa4fe2..81b77bedb49e5a6264b13ec12877262ce31ade68 100644 (file)
@@ -6,10 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:48:58 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:49:12 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:14:59 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stddef.h>
+
 size_t ft_strlen(const char *s)
 {
        size_t  i;
similarity index 53%
rename from ft_mem2.c
rename to ft_strmapi.c
index 94c27072bae0014e67ba06e7e669091241dc0448..436f395abd4637029d149d71e1a2ca9c5edb08e7 100644 (file)
--- a/ft_mem2.c
@@ -1,54 +1,34 @@
 /* ************************************************************************** */
 /*                                                                            */
 /*                                                        :::      ::::::::   */
-/*   ft_mem2.c                                          :+:      :+:    :+:   */
+/*   ft_strmapi.c                                       :+:      :+:    :+:   */
 /*                                                    +:+ +:+         +:+     */
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
-/*   Created: 2025/10/27 14:39:28 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:30:07 by agilliar         ###   ########.fr       */
+/*   Created: 2025/10/29 10:39:05 by agilliar          #+#    #+#             */
+/*   Updated: 2025/10/29 10:46:55 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
-#include "libft.h"
 #include <stdlib.h>
-#include <stdint.h>
+#include "libft.h"
 
-int    ft_memcmp(const void *s1, const void *s2, size_t n)
+char   *ft_strmapi(const char *s, char (*f)(unsigned int, char))
 {
+       size_t  len;
+       char    *res;
        size_t  i;
-       int             res;
 
+       len = ft_strlen(s);
+       res = malloc(len + 1);
+       if (!res)
+               return (res);
        i = 0;
-       res = 0;
-       while (res == 0 && i < n)
+       while (i < len)
        {
-               res = ((unsigned char *) s1)[i] - ((unsigned char *) s2)[i];
+               res[i] = f(i, s[i]);
                i++;
        }
-       return (res);
-}
-
-void   *ft_calloc(size_t nmemb, size_t size)
-{
-       void    *res;
-
-       if (size && SIZE_MAX / size < nmemb)
-               return (NULL);
-       res = malloc(nmemb * size);
-       if (res)
-               ft_bzero(res, nmemb * size);
-       return (res);
-}
-
-char   *ft_strdup(char *src)
-{
-       size_t  len;
-       char    *res;
-
-       len = ft_strlen(src) + 1;
-       res = malloc(len);
-       if (res)
-               ft_memcpy(res, src, len);
+       res[i] = '\0';
        return (res);
 }
index 560a637f5ce78e0ad8ed1a7e208e55846bc6e7ff..c54f1d8a4bcd1531de1ed9751eada74bcb768571 100644 (file)
@@ -6,11 +6,12 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 09:51:22 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:51:35 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:37:33 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include <stddef.h>
+#include <stdbool.h>
 
 char   *ft_strrchr(const char *s, int c)
 {
@@ -22,7 +23,7 @@ char  *ft_strrchr(const char *s, int c)
                if (*s == (char)c)
                        res = (char *) s;
                if (!*s)
-                       break;
+                       break ;
                s++;
        }
        if (*res == (char)c)
index 4d713ef408a5305c1041e3a68cef6f9582860dad..0a1751578b50fc10ccf1f15f8a46a2a7afca9f46 100644 (file)
@@ -6,10 +6,11 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/29 10:08:47 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 10:09:08 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 10:13:24 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <stdbool.h>
 #include "libft.h"
 
 static bool    ft_char_in_set(char c, const char *set)
diff --git a/libft.h b/libft.h
index 05e8f4820d3a4c203c6b07714a0c116fb834d907..7d3299469e72605e482daec9c71b1c10f4d70c84 100644 (file)
--- a/libft.h
+++ b/libft.h
@@ -6,7 +6,7 @@
 /*   By: agilliar <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/10/27 11:27:06 by agilliar          #+#    #+#             */
-/*   Updated: 2025/10/29 09:26:33 by agilliar         ###   ########.fr       */
+/*   Updated: 2025/10/29 13:31:51 by agilliar         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -41,5 +41,29 @@ char *ft_strjoin(const char *s1, const char *s2);
 char   *ft_strtrim(const char *s1, const char *set);
 int            ft_toupper(int c);
 int            ft_tolower(int c);
+char   **ft_split(const char *s, char c);
+char   *ft_itoa(int n);
+char   *ft_strmapi(const char *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