some fixes

This commit is contained in:
David Gailleton
2025-11-09 19:09:56 +01:00
parent d75e58d763
commit 6e5f588613
5 changed files with 61 additions and 26 deletions

View File

@@ -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)

View File

@@ -6,7 +6,7 @@
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 */
/* */
/* ************************************************************************** */

View File

@@ -6,13 +6,13 @@
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}
}
*/

View File

@@ -6,7 +6,7 @@
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}

17
libft.h
View File

@@ -6,7 +6,7 @@
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 <stdlib.h>
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