diff --git a/Makefile b/Makefile index 5ab790e..65ef15c 100644 --- a/Makefile +++ b/Makefile @@ -45,13 +45,27 @@ SRC = ft_isalpha.c \ ft_putendl_fd.c \ ft_putnbr_fd.c -OBJ_DIR = objs +BONUS_SRC = 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 -OBJ = $(patsubst %, $(OBJ_DIR)/%o, $(SRC:.c=.)) +OBJ = $(SRC:.c=.o) + +BONUS_OBJ = $(BONUS_SRC:.c=.o) all: $(NAME) +bonus: $(OBJ) $(BONUS_OBJ) + $(AR) $(ARFLAGS) $(NAME) $(OBJ) $(BONUS_OBJ) + ranlib $(NAME) + $(NAME): $(OBJ) $(AR) $(ARFLAGS) $(NAME) $(OBJ) ranlib $(NAME) diff --git a/ft_atoi.c b/ft_atoi.c index 964f855..f083941 100644 --- a/ft_atoi.c +++ b/ft_atoi.c @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/05 19:07:51 by dgaillet #+# #+# */ -/* Updated: 2025/11/05 20:53:10 by dgaillet ### ########lyon.fr */ +/* Updated: 2025/11/09 17:34:56 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ diff --git a/ft_itoa.c b/ft_itoa.c index 0c1416c..c790793 100644 --- a/ft_itoa.c +++ b/ft_itoa.c @@ -6,13 +6,13 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/07 13:06:35 by dgaillet #+# #+# */ -/* Updated: 2025/11/07 13:52:20 by dgaillet ### ########lyon.fr */ +/* Updated: 2025/11/09 18:47:18 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include "libft.h" -size_t malloc_size(int n) +static size_t count_digits(int n) { size_t size; @@ -27,49 +27,51 @@ size_t malloc_size(int n) return (size); } -void insert_char(char *str, unsigned int nbr, int index) +static void insert_char(char *str, unsigned int nbr, size_t index) { - if (!index) - return ; - str[index] = (nbr % 10) + '0'; - insert_char(str, nbr / 10, index - 1); + while (nbr) + { + str[index--] = nbr % 10 + '0'; + nbr /= 10; + } } char *ft_itoa(int n) { unsigned int nbr; char *str; + size_t size; nbr = n; if (n < 0) nbr = n * -1; - str = malloc(sizeof(char) * (malloc_size(n) + 1)); + size = count_digits(n); + str = malloc(sizeof(char) * (size + 1)); if (!str) return (NULL); + str[size] = '\0'; if (nbr == 0) str[0] = '0'; else { if (n < 0) - { str[0] = '-'; - } - insert_char(str, nbr, malloc_size(n) - 1); + insert_char(str, nbr, size - 1); } - str[malloc_size(n)] = '\0'; return (str); } - -#include "stdio.h" - +/* int main(int argc, char **argv) { char *str; if (argc > 1) { - str = ft_itoa(atoi(argv[1])); - printf("%s\n", str); + str = ft_itoa(42); + if (!str) + return (1); + ft_putstr_fd(str, 1); free(str); } } +*/ diff --git a/ft_memset.c b/ft_memset.c index ee59ed0..b433690 100644 --- a/ft_memset.c +++ b/ft_memset.c @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/05 11:20:47 by dgaillet #+# #+# */ -/* Updated: 2025/11/05 11:44:56 by dgaillet ### ########lyon.fr */ +/* Updated: 2025/11/09 19:08:42 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,13 @@ void *ft_memset(void *s, int c, size_t n) { - if (n <= 0) - return (s); - *((char *) s) = c; - ft_memset(s + 1, c, n - 1); + size_t i; + + i = 0; + while (i < n) + { + ((unsigned char *) s)[i] = c; + i++; + } return (s); } diff --git a/libft.h b/libft.h index 8085d6a..25c4bdc 100644 --- a/libft.h +++ b/libft.h @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/05 09:49:43 by dgaillet #+# #+# */ -/* Updated: 2025/11/08 17:56:20 by dgaillet ### ########lyon.fr */ +/* Updated: 2025/11/09 16:07:05 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,12 @@ # include +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + int ft_isalpha(int c); int ft_isdigit(int c); int ft_isalnum(int c); @@ -49,5 +55,14 @@ 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); +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