newer libft

This commit is contained in:
whaffman 2024-10-28 14:30:25 +01:00
parent 78f5ce8f03
commit b1a66b8617
6 changed files with 30 additions and 17 deletions

View File

@ -20,15 +20,15 @@ SOURCES = ft_atoi.c ft_bzero.c ft_calloc.c ft_isalnum.c ft_isalpha.c \
ft_strlen.c ft_strmapi.c ft_strncmp.c ft_strnstr.c ft_strrchr.c \
ft_strtrim.c ft_substr.c ft_tolower.c ft_toupper.c
BONUS_SOURCES = ft_lstadd_back.c ft_lstadd_front.c ft_lstclear.c \
ft_lstdelone.c ft_lstiter.c ft_lstlast.c ft_lstmap.c \
ft_lstnew.c ft_lstsize.c
BONUS_SOURCES = ft_lstadd_back_bonus.c ft_lstadd_front_bonus.c ft_lstclear_bonus.c \
ft_lstdelone_bonus.c ft_lstiter_bonus.c ft_lstlast_bonus.c ft_lstmap_bonus.c \
ft_lstnew_bonus.c ft_lstsize_bonus.c
OBJECTS = $(SOURCES:.c=.o)
BONUS_OBJECTS = $(BONUS_SOURCES:.c=.o)
CC = gcc
CC = cc
CFLAGS = -Wall -Wextra -Werror
all: $(NAME)

View File

@ -17,7 +17,7 @@ void *ft_calloc(size_t nmemb, size_t size)
{
void *ptr;
if (nmemb && nmemb > (size_t) -1 / nmemb)
if (nmemb && size > (size_t) -1 / nmemb)
{
return (0);
}

View File

@ -11,20 +11,22 @@
/* ************************************************************************** */
#include "libft.h"
#include <stdlib.h>
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
{
t_list *new_list;
t_list *new_elem;
void *new_content;
if (!lst || !f)
return (NULL);
new_list = NULL;
while (lst)
{
new_elem = ft_lstnew(f(lst->content));
new_content = f(lst->content);
new_elem = ft_lstnew(new_content);
if (!new_elem)
{
del(new_content);
ft_lstclear(&new_list, del);
return (NULL);
}

View File

@ -11,6 +11,7 @@
/* ************************************************************************** */
#include <stdlib.h>
#include <string.h>
#include "libft.h"
static int count_words(char const *s, char c)
@ -29,6 +30,16 @@ static int count_words(char const *s, char c)
return (n);
}
static void *free_arr(int n, char ***arr)
{
while (n-- > 0)
{
free((*arr)[n]);
}
free(*arr);
return (NULL);
}
char **ft_split(char const *s, char c)
{
char **result;
@ -36,8 +47,6 @@ char **ft_split(char const *s, char c)
int i;
int j;
if (!s)
return (NULL);
result = malloc((count_words(s, c) + 1) * sizeof(char *));
if (!result)
return (NULL);
@ -51,7 +60,9 @@ char **ft_split(char const *s, char c)
while (s[i + j] && s[i + j] != c)
j++;
if (j)
result[n++] = ft_substr(s, i, j);
result[n] = ft_substr(s, i, j);
if (j && !result[n++])
return (free_arr(n, &result));
i += j;
}
result[n] = NULL;

View File

@ -14,15 +14,15 @@
size_t ft_strlcat(char *dst, const char *src, size_t size)
{
unsigned int src_len;
unsigned int dst_len;
unsigned int i;
size_t src_len;
size_t dst_len;
size_t i;
src_len = ft_strlen(src);
if (size == 0)
return (src_len);
dst_len = ft_strlen(dst);
if (dst_len >= (long int) size)
if (dst_len >= size)
return (size + src_len);
i = 0;
while (src[i] && i < size - dst_len - 1)

View File

@ -19,11 +19,11 @@ char *ft_strrchr(const char *s, int c)
result = NULL;
while (*s)
{
if (*(unsigned char *) s == (unsigned char) c)
if (*s == (char) c)
result = (char *) s;
s++;
}
if ('\0' == c)
if ('\0' == (char) c)
result = (char *) s;
return (result);
}