]> git.dkaiser.de - 42/libft.git/commitdiff
Add stuff, fix stuff and whatever
authorDominik Kaiser <dkaiser@1-C-13.42heilbronn.de>
Thu, 7 Mar 2024 15:51:56 +0000 (16:51 +0100)
committerDominik Kaiser <dkaiser@1-C-13.42heilbronn.de>
Thu, 7 Mar 2024 15:51:56 +0000 (16:51 +0100)
16 files changed:
Makefile
ft_atoi.c
ft_bzero.c
ft_calloc.c
ft_isalpha.c
ft_memcpy.c
ft_memmove.c
ft_memset.c
ft_putchar_fd.c
ft_strchr.c
ft_strlcat.c
ft_strlcpy.c
ft_strncmp.c
ft_strnstr.c
ft_strrchr.c
libft.h

index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3920b81cf4dd6dec493d0e1a7cb99a4c0b08c6e7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -0,0 +1,20 @@
+NAME=libft.a
+CC=cc
+CFLAGS=-Wall -Wextra -Werror
+
+SRC_FILES = $(wildcard *.c)
+OBJ_FILES = $(SRC_FILES:.c=.o)
+
+
+all: $(NAME)
+
+$(NAME): $(OBJ_FILES)
+       ar rcs $(NAME) $(OBJ_FILES)
+
+clean:
+       rm -f $(OBJ_FILES)
+
+fclean: clean
+       -rm -f $(NAME)
+
+re: fclean all
index 6f7bd552b3c6c34b8b5a09676557a2ed087e8692..568a61605076aa35197f8a4560e0503838a2af6b 100644 (file)
--- a/ft_atoi.c
+++ b/ft_atoi.c
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 16:25:27 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 19:41:51 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 14:04:02 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -19,7 +19,7 @@ int   ft_atoi(const char *str)
        posneg = 1;
        result = 0;
        i = 0;
-       while (str[i] >= '\t' && str[i] <= '\r' || str[i] == ' ')
+       while ((str[i] >= '\t' && str[i] <= '\r') || str[i] == ' ')
        {
                i++;
        }
@@ -28,6 +28,8 @@ int   ft_atoi(const char *str)
                posneg = -1;
                i++;
        }
+       else if (str[i] == '+')
+               i++;
        while (str[i] >= '0' && str[i] <= '9')
        {
                result = 10 * result + str[i] - '0';
index d84d5074c14ebb3747b8a2ee92766d564056d3e1..2f77d78d575a0c39bd78e8470b7d4db34076131a 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/05 10:57:36 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 11:49:38 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 12:48:25 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 
 void   ft_bzero(void *s, size_t n)
 {
-       char    *ptr;
        size_t  i;
 
-       ptr = (char *)b;
        i = 0;
        while (i < n)
        {
-               ptr[i] = 0;
+               ((char *)s)[i] = 0;
                i++;
        }
 }
index 117892d0b807ddb0b4fc119706fc9993fd0fb78b..5baf8f1773b8bd13d32bdc6524490e44c74cfaf8 100644 (file)
@@ -6,23 +6,26 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 19:45:56 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 19:52:19 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 16:34:30 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include <stdlib.h>
 
-void   *calloc(size_t count, size_t size)
+void   *ft_calloc(size_t count, size_t size)
 {
        void    *result;
        size_t  i;
 
        result = malloc(count * size);
-       i = 0;
-       while (i < count * size)
+       if (result)
        {
-               *((char *)result + i) = 0;
-               i++;
+               i = 0;
+               while (i < count * size)
+               {
+                       *((char *)result + i) = 0;
+                       i++;
+               }
        }
        return (result);
 }
index 667bb5fd145e4f08423953467f9c17d00100a2f4..64d4b9a2072b8d4e0de49aa223a6fe07d835b832 100644 (file)
@@ -6,11 +6,11 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/04 19:59:23 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/04 21:06:31 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 13:10:30 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
-int    isalpha(int c)
+int    ft_isalpha(int c)
 {
        if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
                return (1);
index 49c4575f70f817c4d448daaef432e05b1df983b8..0ca79fa0f231837dceb195e3df89a9dfc644544b 100644 (file)
@@ -6,32 +6,33 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/05 11:15:12 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/05 11:39:34 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 13:48:53 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include <string.h>
 
-void   *ft_memcpy(void *restrict dst, const void *restrict src, size_t n)
+void   *ft_memcpy(void *dst, const void *src, size_t n)
 {
-       size_t  i;
+       char    *dst_ptr;
+       char    *src_ptr;
 
-       i = 0;
-       while (i < n)
-       {
-               *((char *)dst + i) = *((char *)src + i);
-               i++;
-       }
+       dst_ptr = (char *)dst;
+       src_ptr = (char *)src;
+       if (!dst && !src)
+               return (dst);
+       while (n--)
+               *dst_ptr++ = *src_ptr++;
        return (dst);
 }
 
 /* #include <stdio.h> */
 /* int main(void) */
 /* { */
-/*     char src[] = "Test Hurra"; */
-/*     char src2[] = "Test Hurra"; */
-/*     char dst[] = "AAAAAAIIIIIEEEEE"; */
-/*     char dst2[] = "AAAAAAIIIIIEEEEE"; */
+/*     char src[] = "a"; */
+/*     char src2[] = "a"; */
+/*     char dst[] = ""; */
+/*     char dst2[] = ""; */
 /*     printf("ft_memcpy: %s\n", (char *) ft_memcpy(dst, src, 20)); */
 /*     printf("memcpy: %s\n", (char *) memcpy(dst2, src2, 20)); */
 /* } */
index 9ca3facb2a480144f739754a4d617790bf09468e..e4aa03ec3d0cc61a6d6f106541107b6278aca2fc 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/05 11:41:44 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 14:12:14 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 13:50:41 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -16,6 +16,8 @@ void  *ft_memmove(void *dst, const void *src, size_t len)
 {
        size_t  i;
 
+       if (!dst && !src)
+               return (dst);
        if (dst > src)
        {
                i = len;
index 618a78d5e7380190f1b51419af2acafcde0fc059..60a18e9fa5909a7e5e99c5a291c989054f12eeea 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/05 09:58:19 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/05 11:21:24 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 11:42:44 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 
 void   *ft_memset(void *b, int c, size_t len)
 {
-       char    *ptr;
        size_t  i;
 
-       ptr = (char *)b;
        i = 0;
        while (i < len)
        {
-               ptr[i] = (unsigned char)c;
+               ((char *)b)[i] = (unsigned char)c;
                i++;
        }
        return (b);
index 1eca491c6c626b1089d02d443633c5f74efc83df..5a1808d0b3eae975a7c2d5a871dd8f8495612776 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 20:36:14 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 20:38:06 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/06 21:18:50 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -14,5 +14,5 @@
 
 void   ft_putchar_fd(char c, int fd)
 {
-    write(fd, &c, 1);
+       write(fd, &c, 1);
 }
index e53f78e0432879912eee64247a83415ce6fc0b2c..0b20bb435fcf0e38bf3527edcad91486bf39c67b 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 14:12:39 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 14:35:37 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 16:10:27 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -21,6 +21,8 @@ char  *ft_strchr(const char *s, int c)
                        return ((char *)&s[i]);
                i++;
        }
+       if (!c)
+               return ((char *)&s[i]);
        return (0);
 }
 
index c16105a1648cb9b34bba51fe81d5747a8bfdf15a..0ce0e19d8695b53b5dd4ab789bb0e7a19d647f33 100644 (file)
@@ -6,40 +6,64 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 13:36:59 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 14:11:36 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 16:09:50 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include <string.h>
 
-size_t ft_strlcat(char *restrict dst, const char *restrict src, size_t dstsize)
+/* size_t      ft_strlcat(char *dst, const char *src, size_t dstsize) */
+/* { */
+/*     size_t  len; */
+/*     size_t  i; */
+
+/*     if (dstsize == 0) */
+/*             return (0); */
+/*     len = 0; */
+/*     while (len < dstsize - 1 && dst[len] != '\0') */
+/*     { */
+/*             len++; */
+/*     } */
+/*     i = 0; */
+/*     while (len < dstsize - 1 && src[i] != '\0') */
+/*     { */
+/*             dst[len] = src[i]; */
+/*             len++; */
+/*             i++; */
+/*     } */
+/*     dst[len] = '\0'; */
+/*     return (len); */
+/* } */
+
+size_t ft_strlcat(char *dst, const char *src, size_t dstsize)
 {
-       size_t  len;
+       size_t  src_len;
+       size_t  dst_len;
        size_t  i;
 
-       if (dstsize == 0)
-               return (0);
-       len = 0;
-       while (len < dstsize - 1 && dst[len] != '\0')
-       {
-               len++;
-       }
+       src_len = 0;
+       while (src[src_len])
+               src_len++;
+       dst_len = 0;
+       while (dst[dst_len])
+               dst_len++;
+       if (dst_len >= dstsize)
+               return (dstsize + src_len);
        i = 0;
-       while (len < dstsize - 1 && src[i] != '\0')
+       while (i < src_len && dst_len + i < dstsize - 1)
        {
-               dst[len] = src[i];
-               len++;
+               dst[dst_len + i] = src[i];
                i++;
        }
-       dst[len] = '\0';
-       return (len);
+       dst[dst_len + i] = '\0';
+       return (dst_len + src_len);
 }
 
 /* #include <stdio.h> */
 /* int main () { */
 /*     char dst[12] = "Hello "; */
 /*     char dst2[12] = "Hello "; */
-/*     char src[] = "World"; */
+/*     char src[] = "World123"; */
 
 /*     size_t len = strlcat(dst, src, 12); */
 /*     size_t len2 = ft_strlcat(dst2, src, 12); */
index 670bf18bbac2bb6f63845db6ba8f15d3d7bfb1f4..b4f6abc3cf5da80981bee81a3a2b6a513fbdd4ae 100644 (file)
@@ -6,13 +6,13 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 12:45:25 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 13:30:25 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 14:01:05 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include <string.h>
 
-size_t ft_strlcpy(char *restrict dst, const char *restrict src, size_t dstsize)
+size_t ft_strlcpy(char *dst, const char *src, size_t dstsize)
 {
        size_t  len;
 
@@ -26,9 +26,12 @@ size_t       ft_strlcpy(char *restrict dst, const char *restrict src, size_t dstsize)
                }
                dst[len] = '\0';
                while (src[len] != '\0')
-               {
                        len++;
-               }
+       }
+       else
+       {
+               while (src[len] != '\0')
+                       len++;
        }
        return (len);
 }
@@ -43,8 +46,8 @@ size_t        ft_strlcpy(char *restrict dst, const char *restrict src, size_t dstsize)
 /*     size_t  len; */
 /*     size_t  len2; */
 
-/*     len = strlcpy(dst, src, 10); */
-/*     len2 = ft_strlcpy(dst2, src, 10); */
+/*     len = strlcpy(dst, src, 0); */
+/*     len2 = ft_strlcpy(dst2, src, 0); */
 /*     printf("strlcpy (%zu): %s\n", len, dst); */
 /*     printf("ft_strlcpy (%zu): %s\n", len2, dst2); */
 /* } */
index 2d54ec5b793cd5447c7ce5dec61039a0ab86e532..af24b2a02d489e5be5ee9cf8f12364a9498e59cd 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 14:45:10 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 15:10:48 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 14:26:15 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -19,7 +19,7 @@ int   ft_strncmp(const char *s1, const char *s2, size_t n)
        result = 0;
        while (!result && n > 0 && (*s1 || *s2))
        {
-               result = *s1 - *s2;
+               result = (unsigned char)*s1 - (unsigned char)*s2;
                if (*s1)
                        s1++;
                if (*s2)
index b91d1623935d24f2a225e57bdb56bf32cc506203..2b96b6427b8b2f9d646d924c12c2033b2b74b067 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 16:07:54 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 16:24:52 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 16:40:20 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -18,10 +18,12 @@ char        *ft_strnstr(const char *haystack, const char *needle, size_t len)
        size_t  k;
 
        i = 0;
+       if (*needle == '\0' || needle == haystack)
+               return ((char *)haystack);
        while (i < len)
        {
                k = 0;
-               while (haystack[i + k] == needle[k])
+               while (haystack[i + k] && haystack[i + k] == needle[k] && i + k < len)
                {
                        k++;
                }
@@ -33,9 +35,12 @@ char *ft_strnstr(const char *haystack, const char *needle, size_t len)
 }
 
 /* #include <stdio.h> */
-/* int main() { */
-/*     char haystack[] = "Hello world"; */
-/*     char needle[] = "d"; */
-/*     printf("strnstr: %s\n", strnstr(haystack, needle, 10)); */
-/*     printf("ft_strnstr: %s\n", ft_strnstr(haystack, needle, 10)); */
+
+/* int main(void) */
+/* { */
+/*     char    haystack[] = "M"; */
+/*     char    needle[] = "MZIRIBMZE"; */
+
+/*     printf("strnstr: %s\n", strnstr(haystack, haystack, 2)); */
+/*     printf("ft_strnstr: %s\n", ft_strnstr(haystack, haystack, 2)); */
 /* } */
index e548f5b9b8ecbbb98985fb3a303f5913ff46ea5d..ac0d0ab9044e7847d2f5bcaa472a1dbff9be69f4 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/06 14:25:30 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/03/06 14:35:16 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/03/07 14:09:13 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -23,6 +23,8 @@ char  *ft_strrchr(const char *s, int c)
                        last_occurrence = (char *)&s[i];
                i++;
        }
+       if (!c)
+               last_occurrence = (char *)&s[i];
        return (last_occurrence);
 }
 
diff --git a/libft.h b/libft.h
index dbad3f88c5f76f142b440d4a225770d96e0fe3c7..8fa6fd4dd7ba894fea21ec0b9aa1890f62f7289a 100644 (file)
--- a/libft.h
+++ b/libft.h
@@ -1,6 +1,50 @@
-#ifndef LIBFT_H_
-#define LIBFT_H_
-
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   libft.h                                            :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2024/03/06 21:38:24 by dkaiser           #+#    #+#             */
+/*   Updated: 2024/03/07 16:23:00 by dkaiser          ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
 
+#ifndef LIBFT_H_
+# define LIBFT_H_
 
-#endif // LIBFT_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);
+#endif