diff options
| -rw-r--r-- | Makefile | 6 | ||||
| -rw-r--r-- | ft_atoi.c | 24 | ||||
| -rw-r--r-- | ft_bzero.c | 9 | ||||
| -rw-r--r-- | ft_calloc.c | 24 | ||||
| -rw-r--r-- | ft_memmove.c | 16 | ||||
| -rw-r--r-- | ft_putendl.c | 4 | ||||
| -rw-r--r-- | ft_putendl_fd.c | 4 | ||||
| -rw-r--r-- | ft_putstr_fd.c | 4 | ||||
| -rw-r--r-- | ft_split.c (renamed from ft_strsplit.c) | 4 | ||||
| -rw-r--r-- | ft_strlcpy.c | 30 | ||||
| -rw-r--r-- | ft_strmapi.c | 4 | ||||
| -rw-r--r-- | ft_strnstr.c | 22 | ||||
| -rw-r--r-- | ft_strtrim.c | 18 | ||||
| -rw-r--r-- | ft_substr.c (renamed from ft_strsub.c) | 4 | ||||
| -rw-r--r-- | libft.h | 25 |
15 files changed, 126 insertions, 72 deletions
@@ -9,8 +9,8 @@ SRC = ft_atoi.c ft_bzero.c ft_isalnum.c ft_isalpha.c ft_isascii.c ft_isdigit.c f ft_strclr.c ft_strcmp.c ft_strcpy.c ft_strdel.c ft_strdup.c ft_strequ.c ft_striter.c \ ft_striteri.c ft_strjoin.c ft_strlcat.c ft_strlen.c ft_strmap.c ft_strmapi.c \ ft_strncat.c ft_strncmp.c ft_strncpy.c ft_strnequ.c ft_strnew.c ft_strnstr.c \ - ft_strrchr.c ft_strsplit.c ft_strstr.c ft_strsub.c ft_strtrim.c ft_tolower.c \ - ft_toupper.c + ft_strrchr.c ft_split.c ft_strstr.c ft_substr.c ft_strtrim.c ft_tolower.c \ + ft_toupper.c ft_strlcpy.c ft_calloc.c OBJ = $(SRC:.c=.o) all: $(NAME) @@ -19,7 +19,7 @@ $(NAME): $(OBJ) libft.h ar rc $(NAME) $(OBJ) %.o: %.c - $(CC) $(CCFLAGS) -fPIC -c -o $@ $< # /!\ fPIC + $(CC) $(CCFLAGS) -c -o $@ $< clean: rm -f $(OBJ) @@ -6,47 +6,47 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:46:16 by cacharle #+# #+# */ -/* Updated: 2019/10/07 11:34:37 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 14:04:17 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #define MIN_INT (1 << 31) #define MAX_INT (~(1 << 31)) -static int precheck(const char **nptr) +static int precheck(const char **str) { int is_negative; - while (**nptr == ' ' || **nptr == '\t' || **nptr == '\n' - || **nptr == '\v' || **nptr == '\f' || **nptr == '\r') - (*nptr)++; + while (**str == ' ' || **str == '\t' || **str == '\n' + || **str == '\v' || **str == '\f' || **str == '\r') + (*str)++; is_negative = 0; - if (**nptr == '-' || **nptr == '+') + if (**str == '-' || **str == '+') { - if (**nptr == '-') + if (**str == '-') is_negative = 1; - (*nptr)++; + (*str)++; } return (is_negative); } -int ft_atoi(const char *nptr) +int ft_atoi(const char *str) { unsigned int nb; int i; int is_negative; - is_negative = precheck(&nptr); + is_negative = precheck(&str); i = 0; nb = 0; - while (nptr[i] >= '0' && nptr[i] <= '9') + while (str[i] >= '0' && str[i] <= '9') { if (!is_negative && nb > (unsigned int)MAX_INT) return (-1); else if (nb > (unsigned int)MIN_INT) return (0); nb *= 10; - nb += nptr[i] - '0'; + nb += str[i] - '0'; i++; } return ((int)(is_negative ? -nb : nb)); @@ -6,17 +6,14 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:50:10 by cacharle #+# #+# */ -/* Updated: 2019/10/07 09:50:22 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 12:08:09 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <string.h> +#include "libft.h" void ft_bzero(void *s, size_t n) { - char *s_char_ptr; - - s_char_ptr = (char*)s; - while (n-- > 0) - s_char_ptr[n] = 0; + ft_memset(s, 0, n); } diff --git a/ft_calloc.c b/ft_calloc.c new file mode 100644 index 0000000..a6d88a0 --- /dev/null +++ b/ft_calloc.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/10/07 12:45:37 by cacharle #+# #+# */ +/* Updated: 2019/10/07 12:47:58 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <stdlib.h> +#include "libft.h" + +void *ft_calloc(size_t count, size_t size) +{ + void *mem; + + if ((mem = malloc(count * size)) == NULL) + return (NULL); + ft_bzero(mem, count * size); + return (mem); +} diff --git a/ft_memmove.c b/ft_memmove.c index 282ea52..185fd36 100644 --- a/ft_memmove.c +++ b/ft_memmove.c @@ -6,29 +6,29 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:03:21 by cacharle #+# #+# */ -/* Updated: 2019/10/07 11:17:29 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 12:20:25 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> #include <string.h> -#define BUF_SIZE 4096 +#define BUF_SIZE (2 << 12) -void *ft_memmove(void *dest, const void *src, size_t n) +void *ft_memmove(void *dst, const void *src, size_t len) { size_t i; size_t j; size_t k; unsigned char tmp[BUF_SIZE]; - if (dest == NULL && src == NULL) + if (dst == NULL && src == NULL) return (NULL); i = 0; - while (i < n) + while (i < len) { j = 0; - while (j < BUF_SIZE && i < n) + while (j < BUF_SIZE && i < len) { tmp[j] = ((unsigned char*)src)[i]; j++; @@ -36,8 +36,8 @@ void *ft_memmove(void *dest, const void *src, size_t n) } k = -1; while (++k < j) - ((unsigned char*)dest)[k] = tmp[k]; + ((unsigned char*)dst)[k] = tmp[k]; i++; } - return (dest); + return (dst); } diff --git a/ft_putendl.c b/ft_putendl.c index 5bd86e5..fb40829 100644 --- a/ft_putendl.c +++ b/ft_putendl.c @@ -6,14 +6,14 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:42:54 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:43:01 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 13:24:18 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <unistd.h> #include "libft.h" -void ft_putendl(char const *s) +void ft_putendl(char *s) { ft_putstr(s); ft_putchar('\n'); diff --git a/ft_putendl_fd.c b/ft_putendl_fd.c index c1ed236..d9f6d7d 100644 --- a/ft_putendl_fd.c +++ b/ft_putendl_fd.c @@ -6,13 +6,13 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:44:06 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:44:14 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 13:32:37 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" -void ft_putendl_fd(char const *s, int fd) +void ft_putendl_fd(char *s, int fd) { ft_putstr_fd(s, fd); ft_putchar_fd('\n', fd); diff --git a/ft_putstr_fd.c b/ft_putstr_fd.c index 7053650..22028b7 100644 --- a/ft_putstr_fd.c +++ b/ft_putstr_fd.c @@ -6,13 +6,13 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:40:15 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:40:22 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 13:26:14 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <unistd.h> -void ft_putstr_fd(char const *s, int fd) +void ft_putstr_fd(char *s, int fd) { while (*s) write(fd, s++, 1); diff --git a/ft_strsplit.c b/ft_split.c index 3b80bfb..e3b312c 100644 --- a/ft_strsplit.c +++ b/ft_split.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:22:09 by cacharle #+# #+# */ -/* Updated: 2019/10/07 11:11:15 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 14:30:10 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,7 +48,7 @@ static char *ft_strndup(const char *s1, size_t n) return (clone); } -char **ft_strsplit(char const *s, char c) +char **ft_split(char const *s, char c) { char **strs; size_t size; diff --git a/ft_strlcpy.c b/ft_strlcpy.c new file mode 100644 index 0000000..3f287a3 --- /dev/null +++ b/ft_strlcpy.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/10/07 12:28:47 by cacharle #+# #+# */ +/* Updated: 2019/10/07 12:33:40 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <string.h> +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + unsigned int i; + + if (size == 0) + return (ft_strlen(src)); + i = 0; + while (i < size - 1 && src[i] != '\0') + { + dst[i] = src[i]; + i++; + } + dst[i] = '\0'; + return (ft_strlen(src)); +} diff --git a/ft_strmapi.c b/ft_strmapi.c index a03395e..2ded74e 100644 --- a/ft_strmapi.c +++ b/ft_strmapi.c @@ -6,14 +6,14 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:29:32 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:31:12 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 13:22:15 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> #include "libft.h" -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +char *ft_strmapi(char *s, char (*f)(unsigned int, char)) { size_t i; size_t len; diff --git a/ft_strnstr.c b/ft_strnstr.c index 5f4bb91..d65a6f6 100644 --- a/ft_strnstr.c +++ b/ft_strnstr.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:25:13 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:26:11 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 12:40:59 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,27 +14,27 @@ #include <string.h> #include "libft.h" -char *ft_strnstr(const char *big, const char *little, size_t len) +char *ft_strnstr(const char *haystack, const char *needle, size_t len) { size_t i; size_t j; - size_t little_len; + size_t needle_len; - little_len = ft_strlen(little); - if (little_len == 0 || len == 0) - return ((char*)big); + needle_len = ft_strlen(needle); + if (needle_len == 0 || len == 0) + return ((char*)haystack); i = 0; - while (i < len && big[i]) + while (i < len && haystack[i]) { j = 0; - while (i + j < len && little[j] && big[i + j]) + while (i + j < len && needle[j] && haystack[i + j]) { - if (little[j] != big[i + j]) + if (needle[j] != haystack[i + j]) break ; j++; } - if (j == little_len) - return ((char*)big + i); + if (j == needle_len) + return ((char*)haystack + i); i++; } return (NULL); diff --git a/ft_strtrim.c b/ft_strtrim.c index 9d6e7d7..4ff2cfe 100644 --- a/ft_strtrim.c +++ b/ft_strtrim.c @@ -6,34 +6,30 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:24:16 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:25:02 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 14:04:31 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> #include "libft.h" -static int is_space(char c) -{ - return (c == ' ' || c == '\n' || c == '\t'); -} - -char *ft_strtrim(char const *s) +char *ft_strtrim(char const *s1, char const *set) { size_t start; size_t len; char *trimed; start = 0; - while (s[start] && is_space(s[start])) + while (s1[start] && ft_strchr(set, s1[start]) != NULL) start++; - len = ft_strlen(&s[start]); + len = ft_strlen(&s1[start]); if (len != 0) - while (s[start + len - 1] && is_space(s[start + len - 1])) + while (s1[start + len - 1] + && ft_strchr(set, s1[start + len - 1]) != NULL) len--; if ((trimed = (char*)malloc(sizeof(char) * (len + 1))) == NULL) return (NULL); - trimed = ft_strncpy(trimed, &s[start], len); + trimed = ft_strncpy(trimed, &s1[start], len); trimed[len] = '\0'; return (trimed); } diff --git a/ft_strsub.c b/ft_substr.c index 6f11657..7f7d3c4 100644 --- a/ft_strsub.c +++ b/ft_substr.c @@ -6,13 +6,13 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:16:26 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:17:24 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 12:52:43 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> -char *ft_strsub(char const *s, unsigned int start, size_t len) +char *ft_substr(char const *s, unsigned int start, size_t len) { unsigned int i; char *sub; @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:45:02 by cacharle #+# #+# */ -/* Updated: 2019/10/07 09:45:04 by cacharle ### ########.fr */ +/* Updated: 2019/10/07 14:30:19 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,11 +15,14 @@ # include <string.h> +# define TRUE 1 +# define FALSE 0 + void *ft_memset(void *s, int c, size_t n); void ft_bzero(void *s, size_t n); void *ft_memcpy(void *dest, const void *src, size_t n); void *ft_memccpy(void *dest, const void *src, int c, size_t n); -void *ft_memmove(void *dest, const void *src, size_t n); +void *ft_memmove(void *dst, const void *src, size_t len); void *ft_memchr(const void *s, int c, size_t n); int ft_memcmp(const void *s1, const void *s2, size_t n); size_t ft_strlen(const char *s); @@ -29,10 +32,11 @@ char *ft_strncpy(char *dest, const char *src, size_t n); char *ft_strcat(char *dest, const char *src); char *ft_strncat(char *dest, const char *src, size_t n); size_t ft_strlcat(char *dst, const char *src, size_t size); +size_t ft_strlcpy(char *dst, const char *src, size_t size); char *ft_strchr(const char *s, int c); char *ft_strrchr(const char *s, int c); char *ft_strstr(const char *haystack, const char *needle); -char *ft_strnstr(const char *big, const char *little, size_t len); +char *ft_strnstr(const char *haystack, const char *needle, size_t len); int ft_strcmp(const char *s1, const char *s2); int ft_strncmp(const char *s1, const char *s2, size_t n); int ft_atoi(const char *nptr); @@ -42,6 +46,7 @@ int ft_isalnum(int c); int ft_isascii(int c); int ft_isprint(int c); int ft_toupper(int c); +void *ft_calloc(size_t count, size_t size); void *ft_memalloc(size_t size); void ft_memdel(void **ap); char *ft_strnew(size_t size); @@ -50,19 +55,21 @@ void ft_strclr(char *s); void ft_striter(char *s, void (*f)(char *)); void ft_striteri(char *s, void (*f)(unsigned int, char *)); char *ft_strmap(char const *s, char (*f)(char)); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +char *ft_strmapi(char *s, char (*f)(unsigned int, char)); int ft_strequ(char const *s1, char const *s2); int ft_strnequ(char const *s1, char const *s2, size_t n); -char *ft_strsub(char const *s, unsigned int start, size_t len); +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 *s); -char **ft_strsplit(char const *s, char c); +char *ft_strtrim(char const *s1, char const *set); +char **ft_split(char const *s, char c); char *ft_itoa(int n); +void ft_putendl(char *s); void ft_putchar(char c); void ft_putstr(char const *s); void ft_putnbr(int n); void ft_putchar_fd(char c, int fd); -void ft_putstr_fd(char const *s, int fd); -void ft_putendl_fd(char const *s, 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 |
