From e07af12bfbd2a209450b5a51209fc2ae106487a2 Mon Sep 17 00:00:00 2001 From: kinou Date: Tue, 8 Dec 2020 18:09:58 +0100 Subject: [PATCH] ft_split.c --- ft_split.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 ft_split.c diff --git a/ft_split.c b/ft_split.c new file mode 100644 index 0000000..9b888f4 --- /dev/null +++ b/ft_split.c @@ -0,0 +1,77 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/07 00:54:12 by apommier #+# #+# */ +/* Updated: 2020/12/07 00:54:20 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +int call(char *s, char c, char **dest, int j) +{ + int i; + + i = 0; + while (j > i) + { + if (fill_tab(*s, c, dest[i])) + j--; + else + { + while (i - 1) + { + free(dest[i - 1]); + } + free(dest); + } + i++; + } +} + +int fill_tab(char *s, char c, char *dest) +{ + int i; + + i = 0; + while (s[i] != c || s[i]) + i++; + dest = (char*)ft_calloc(i + 1, sizeof(char)) + if (dest == 0) + return (0); + i = 0; + while (s[i] != c || s[i]) + { + dest[i] = s[i]; + i++; + } + dest[i] = 0; + return (1); +} + +char **ft_split(char const *s, char c) +{ + int i; + int j; + char **dest; + + j = 0; + i = 0; + if (s[i] == c) + i++; + while (s[i]) + { + if (s[i] == c) + j++; + i++; + } + dest = (char**)malloc(sizeof(char*) * j) + if (dest == 0) + return (0) + call(*s, c, **dest, j); +}