diff options
| -rw-r--r-- | Makefile | 20 | ||||
| -rw-r--r-- | ft_atoi.c | 6 | ||||
| -rw-r--r-- | ft_bzero.c | 6 | ||||
| -rw-r--r-- | ft_calloc.c | 15 | ||||
| -rw-r--r-- | ft_isalpha.c | 4 | ||||
| -rw-r--r-- | ft_memcpy.c | 27 | ||||
| -rw-r--r-- | ft_memmove.c | 4 | ||||
| -rw-r--r-- | ft_memset.c | 6 | ||||
| -rw-r--r-- | ft_putchar_fd.c | 4 | ||||
| -rw-r--r-- | ft_strchr.c | 4 | ||||
| -rw-r--r-- | ft_strlcat.c | 56 | ||||
| -rw-r--r-- | ft_strlcpy.c | 15 | ||||
| -rw-r--r-- | ft_strncmp.c | 4 | ||||
| -rw-r--r-- | ft_strnstr.c | 19 | ||||
| -rw-r--r-- | ft_strrchr.c | 4 | ||||
| -rw-r--r-- | libft.h | 52 |
16 files changed, 175 insertions, 71 deletions
@@ -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 @@ -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'; @@ -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 */ /* */ /* ************************************************************************** */ @@ -14,14 +14,12 @@ 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++; } } diff --git a/ft_calloc.c b/ft_calloc.c index 117892d..5baf8f1 100644 --- a/ft_calloc.c +++ b/ft_calloc.c @@ -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); } diff --git a/ft_isalpha.c b/ft_isalpha.c index 667bb5f..64d4b9a 100644 --- a/ft_isalpha.c +++ b/ft_isalpha.c @@ -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); diff --git a/ft_memcpy.c b/ft_memcpy.c index 49c4575..0ca79fa 100644 --- a/ft_memcpy.c +++ b/ft_memcpy.c @@ -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)); */ /* } */ diff --git a/ft_memmove.c b/ft_memmove.c index 9ca3fac..e4aa03e 100644 --- a/ft_memmove.c +++ b/ft_memmove.c @@ -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; diff --git a/ft_memset.c b/ft_memset.c index 618a78d..60a18e9 100644 --- a/ft_memset.c +++ b/ft_memset.c @@ -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 */ /* */ /* ************************************************************************** */ @@ -14,14 +14,12 @@ 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); diff --git a/ft_putchar_fd.c b/ft_putchar_fd.c index 1eca491..5a1808d 100644 --- a/ft_putchar_fd.c +++ b/ft_putchar_fd.c @@ -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); } diff --git a/ft_strchr.c b/ft_strchr.c index e53f78e..0b20bb4 100644 --- a/ft_strchr.c +++ b/ft_strchr.c @@ -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); } diff --git a/ft_strlcat.c b/ft_strlcat.c index c16105a..0ce0e19 100644 --- a/ft_strlcat.c +++ b/ft_strlcat.c @@ -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); */ diff --git a/ft_strlcpy.c b/ft_strlcpy.c index 670bf18..b4f6abc 100644 --- a/ft_strlcpy.c +++ b/ft_strlcpy.c @@ -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); */ /* } */ diff --git a/ft_strncmp.c b/ft_strncmp.c index 2d54ec5..af24b2a 100644 --- a/ft_strncmp.c +++ b/ft_strncmp.c @@ -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) diff --git a/ft_strnstr.c b/ft_strnstr.c index b91d162..2b96b64 100644 --- a/ft_strnstr.c +++ b/ft_strnstr.c @@ -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)); */ /* } */ diff --git a/ft_strrchr.c b/ft_strrchr.c index e548f5b..ac0d0ab 100644 --- a/ft_strrchr.c +++ b/ft_strrchr.c @@ -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); } @@ -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 |
