commit 6c4b2222afd37724cebc2aabaf8f04a357918ace Author: Adam Joly <adjoly@2E2.42angouleme.fr> Date: Fri Nov 3 16:21:15 2023 +0100 first commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5b4d1b0 --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/11/01 11:03:22 by adjoly #+# #+# # +# Updated: 2023/11/03 11:59:46 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +NAME = libft.a + +CC = cc + +SRCS = ft_atoi.c \ + ft_bzero.c \ + ft_isalnum.c \ + ft_isalpha.c \ + ft_isascii.c \ + ft_isdigit.c \ + ft_putchar_fd.c \ + ft_putnbr_fd.c \ + ft_putstr_fd.c \ + ft_memcpy.c \ + ft_memset.c \ + ft_strlcpy.c \ + ft_strlen.c \ + ft_substr.c \ + ft_tolower.c \ + ft_toupper.c \ + +OBJS = $(SRCS:.c=.o) + +FLAGS = -Werror -Wall -Wextra + +HEADER = libft.h + +$(NAME): $(OBJS) + ar -rcs $(NAME) $(OBJS) + +%.o: %.c + $(CC) $(FLAGS) -I $(HEADER) $< -c -o $@ + +all: $(NAME) + +clean: + rm -f $(OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all + +.PHONY: clean all re fclean \ No newline at end of file diff --git a/ft_atoi.c b/ft_atoi.c new file mode 100644 index 0000000..ec4eecb --- /dev/null +++ b/ft_atoi.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 09:00:27 by adjoly #+# #+# */ +/* Updated: 2023/11/01 17:15:05 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_atoi(const char *nptr) +{ + int i; + int sign; + int nbr; + + i = 0; + sign = 1; + nbr = 0; + while ((nptr[i] >= 7 && nptr[i] <= 13) || nptr[i] == 32) + i++; + if (nptr[i] == '-') + { + sign *= -1; + i++; + } + else if (nptr[i] == '+') + i++; + while (nptr[i] >= '0' && nptr[i] <= '9') + { + nbr = nbr * 10 + (nptr[i] - '0'); + i++; + } + return (nbr * sign); +} diff --git a/ft_atoi.o b/ft_atoi.o new file mode 100644 index 0000000..afb0010 Binary files /dev/null and b/ft_atoi.o differ diff --git a/ft_bzero.c b/ft_bzero.c new file mode 100644 index 0000000..c6902d8 --- /dev/null +++ b/ft_bzero.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/03 11:58:03 by adjoly #+# #+# */ +/* Updated: 2023/11/03 12:03:51 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + ft_memset(s, '\0', n); +} diff --git a/ft_bzero.o b/ft_bzero.o new file mode 100644 index 0000000..62d7f17 Binary files /dev/null and b/ft_bzero.o differ diff --git a/ft_calloc.c b/ft_calloc.c new file mode 100644 index 0000000..8504518 --- /dev/null +++ b/ft_calloc.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/01 16:02:26 by adjoly #+# #+# */ +/* Updated: 2023/11/01 16:06:22 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *calloc(size_t nmemb, size_t size) +{ + +} diff --git a/ft_isalnum.c b/ft_isalnum.c new file mode 100644 index 0000000..b41e0b0 --- /dev/null +++ b/ft_isalnum.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 08:31:10 by adjoly #+# #+# */ +/* Updated: 2023/11/03 11:49:58 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalnum(int c) +{ + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') + || (c >= '0' && c <= '9')) + return (1); + return (0); +} diff --git a/ft_isalnum.o b/ft_isalnum.o new file mode 100644 index 0000000..aecf709 Binary files /dev/null and b/ft_isalnum.o differ diff --git a/ft_isalpha.c b/ft_isalpha.c new file mode 100644 index 0000000..5585ab7 --- /dev/null +++ b/ft_isalpha.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 08:31:10 by adjoly #+# #+# */ +/* Updated: 2023/11/03 11:52:37 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalpha(int c) +{ + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) + return (1); + return (0); +} diff --git a/ft_isalpha.o b/ft_isalpha.o new file mode 100644 index 0000000..0bd62e8 Binary files /dev/null and b/ft_isalpha.o differ diff --git a/ft_isascii.c b/ft_isascii.c new file mode 100644 index 0000000..32648e4 --- /dev/null +++ b/ft_isascii.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 08:31:10 by adjoly #+# #+# */ +/* Updated: 2023/10/31 08:46:18 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + return (0); +} diff --git a/ft_isascii.o b/ft_isascii.o new file mode 100644 index 0000000..11cdcbf Binary files /dev/null and b/ft_isascii.o differ diff --git a/ft_isdigit.c b/ft_isdigit.c new file mode 100644 index 0000000..79e2778 --- /dev/null +++ b/ft_isdigit.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 08:50:01 by adjoly #+# #+# */ +/* Updated: 2023/11/03 11:53:33 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isdigit(int c) +{ + if (c >= '0' && c <= '9') + return (1); + return (0); +} diff --git a/ft_isdigit.o b/ft_isdigit.o new file mode 100644 index 0000000..9473b5f Binary files /dev/null and b/ft_isdigit.o differ diff --git a/ft_memcpy.c b/ft_memcpy.c new file mode 100644 index 0000000..0c0abb3 --- /dev/null +++ b/ft_memcpy.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/02 10:21:55 by adjoly #+# #+# */ +/* Updated: 2023/11/02 11:30:30 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t n) +{ + size_t i; + + i = 0; + if (src == NULL || dest == NULL || n == 0) + { + return (dest); + } + while (i < n) + { + ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; + i++; + } + return (dest); +} diff --git a/ft_memcpy.o b/ft_memcpy.o new file mode 100644 index 0000000..c12f998 Binary files /dev/null and b/ft_memcpy.o differ diff --git a/ft_memmove.c b/ft_memmove.c new file mode 100644 index 0000000..bc2ebdf --- /dev/null +++ b/ft_memmove.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/03 15:04:04 by adjoly #+# #+# */ +/* Updated: 2023/11/03 15:57:15 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t n) +{ + +} diff --git a/ft_memset.c b/ft_memset.c new file mode 100644 index 0000000..a9d8143 --- /dev/null +++ b/ft_memset.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 17:40:22 by adjoly #+# #+# */ +/* Updated: 2023/11/03 12:11:08 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memset(void *s, int c, size_t n) +{ + size_t i; + + i = 0; + while (i < n) + { + ((char *)(s))[i] = c; + i++; + } + return (s); +} diff --git a/ft_memset.o b/ft_memset.o new file mode 100644 index 0000000..936618d Binary files /dev/null and b/ft_memset.o differ diff --git a/ft_putchar_fd.c b/ft_putchar_fd.c new file mode 100644 index 0000000..b644921 --- /dev/null +++ b/ft_putchar_fd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 11:42:17 by adjoly #+# #+# */ +/* Updated: 2023/11/01 17:15:09 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write(fd, &c, 1); +} diff --git a/ft_putchar_fd.o b/ft_putchar_fd.o new file mode 100644 index 0000000..786101f Binary files /dev/null and b/ft_putchar_fd.o differ diff --git a/ft_putnbr_fd.c b/ft_putnbr_fd.c new file mode 100644 index 0000000..a21fe77 --- /dev/null +++ b/ft_putnbr_fd.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 11:52:46 by adjoly #+# #+# */ +/* Updated: 2023/11/03 11:54:29 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + unsigned int nbr; + + if (n < 0) + { + write(fd, "-", 1); + nbr = -n; + } + else + nbr = n; + if (nbr < 10) + write(fd, &(char){nbr + '0'}, 1); + else + { + ft_putnbr_fd(nbr / 10, fd); + write(fd, &(char){(nbr + '0') % 10}, 1); + } +} + +// int main(void) +// { +// ft_putnbr_fd(10, 1); +// } diff --git a/ft_putnbr_fd.o b/ft_putnbr_fd.o new file mode 100644 index 0000000..2560b2b Binary files /dev/null and b/ft_putnbr_fd.o differ diff --git a/ft_putstr_fd.c b/ft_putstr_fd.c new file mode 100644 index 0000000..1f63bff --- /dev/null +++ b/ft_putstr_fd.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 11:45:55 by adjoly #+# #+# */ +/* Updated: 2023/11/01 17:14:02 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + int i; + + i = 0; + while (s[i]) + { + write(fd, &s[i], 1); + i++; + } +} diff --git a/ft_putstr_fd.o b/ft_putstr_fd.o new file mode 100644 index 0000000..12aaf0b Binary files /dev/null and b/ft_putstr_fd.o differ diff --git a/ft_strchr.c b/ft_strchr.c new file mode 100644 index 0000000..237ed3f --- /dev/null +++ b/ft_strchr.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/01 15:45:18 by adjoly #+# #+# */ +/* Updated: 2023/11/02 10:08:05 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strchr(const char *s, int c) +{ + int i; + int j; + char *str_result; + + i = 0; + j = 0; + while (s[i] != c || s[i]) + i++; + if (s[i] == c) + { + while (s[i]) + { + str_result[j] = s[j + i]; + j++; + } + return (str_result); + } + str_result[0] = '\0'; + return (str_result); +} diff --git a/ft_strlcat.c b/ft_strlcat.c new file mode 100644 index 0000000..b2d1c87 --- /dev/null +++ b/ft_strlcat.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/03 15:59:31 by adjoly #+# #+# */ +/* Updated: 2023/11/03 16:03:46 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include 'libft.h' + +size_t strlcat(char *dst, const char *src, size_t size) +{ + +} \ No newline at end of file diff --git a/ft_strlcpy.c b/ft_strlcpy.c new file mode 100644 index 0000000..7299a2e --- /dev/null +++ b/ft_strlcpy.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/01 09:52:45 by adjoly #+# #+# */ +/* Updated: 2023/11/03 16:15:47 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + size_t i; + + i = 0; + while (i < size - 1 && src[i]) + { + dst[i] = src[i]; + i++; + } + if (i < size) + dst[i] = '\0'; + return (ft_strlen(src)); +} diff --git a/ft_strlcpy.o b/ft_strlcpy.o new file mode 100644 index 0000000..3e5e975 Binary files /dev/null and b/ft_strlcpy.o differ diff --git a/ft_strlen.c b/ft_strlen.c new file mode 100644 index 0000000..5ccf0b8 --- /dev/null +++ b/ft_strlen.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/30 18:15:57 by adjoly #+# #+# */ +/* Updated: 2023/11/01 17:15:12 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlen(const char *s) +{ + int i; + + i = 0; + while (s[i]) + i++; + return (i); +} diff --git a/ft_strlen.o b/ft_strlen.o new file mode 100644 index 0000000..0bbb64d Binary files /dev/null and b/ft_strlen.o differ diff --git a/ft_substr.c b/ft_substr.c new file mode 100644 index 0000000..c945549 --- /dev/null +++ b/ft_substr.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/02 17:59:58 by adjoly #+# #+# */ +/* Updated: 2023/11/03 09:56:01 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + size_t i; + char *result; + + i = 0; + if (s == NULL || len == 0) + return (NULL); + if (start >= ft_strlen(s)) + { + result = malloc(1); + result[0] = '\0'; + return (result); + } + result = malloc(len * sizeof(char)); + if (result == NULL) + return (NULL); + while (i < len && s[start + i]) + { + result[i] = s[start + i]; + i++; + } + result[i] = '\0'; + return (result); +} diff --git a/ft_substr.o b/ft_substr.o new file mode 100644 index 0000000..94c2f11 Binary files /dev/null and b/ft_substr.o differ diff --git a/ft_tolower.c b/ft_tolower.c new file mode 100644 index 0000000..56bb63e --- /dev/null +++ b/ft_tolower.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 17:15:28 by adjoly #+# #+# */ +/* Updated: 2023/10/31 17:26:10 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + return (c + 32); + return (c); +} diff --git a/ft_tolower.o b/ft_tolower.o new file mode 100644 index 0000000..9fde8fe Binary files /dev/null and b/ft_tolower.o differ diff --git a/ft_toupper.c b/ft_toupper.c new file mode 100644 index 0000000..5066e55 --- /dev/null +++ b/ft_toupper.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/10/31 17:15:28 by adjoly #+# #+# */ +/* Updated: 2023/10/31 17:26:15 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + return (c - 32); + return (c); +} diff --git a/ft_toupper.o b/ft_toupper.o new file mode 100644 index 0000000..374dad9 Binary files /dev/null and b/ft_toupper.o differ diff --git a/libft.a b/libft.a new file mode 100644 index 0000000..7df3753 Binary files /dev/null and b/libft.a differ diff --git a/libft.h b/libft.h new file mode 100644 index 0000000..233bd10 --- /dev/null +++ b/libft.h @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/01 10:06:03 by adjoly #+# #+# */ +/* Updated: 2023/11/03 15:57:10 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include <stddef.h> +# include <stdlib.h> +# include <unistd.h> + +int ft_atoi(const char *nptr); +void *ft_calloc(size_t nmemb, size_t size); +int ft_isalnum(int c); +int ft_isalpha(int c); +int ft_isascii(int c); +int ft_isdigit(int c); +void ft_bzero(void *s, size_t n); +void *ft_memset(void *s, int c, size_t n); +void *ft_memmove(void *dest, const void *src, size_t n); +void *ft_memcpy(void *dest, const void *src, size_t n); +void ft_putchar_fd(char c, int fd); +void ft_putnbr_fd(int n, int fd); +void ft_putstr_fd(char *s, int fd); +char *ft_strchr(const char *s, int c); +size_t ft_strlcpy(char *dst, const char *src, size_t size); +size_t ft_strlen(const char *s); +char *ft_substr(char const *s, unsigned int start, size_t len); +int ft_tolower(int c); +int ft_toupper(int c); + +#endif \ No newline at end of file