diff --git a/ft_split_charset.c b/ft_split_charset.c index 193ec82..e10d006 100644 --- a/ft_split_charset.c +++ b/ft_split_charset.c @@ -6,33 +6,42 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/11 14:50:26 by erey-bet #+# #+# */ -/* Updated: 2023/04/11 17:48:13 by erey-bet ### ########.fr */ +/* Updated: 2023/04/11 18:49:24 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include #include +int ft_strlen(char *s) +{ + int i = 0; + while (s[i]) + i++; + return (i); +} + int new_strs(char ***strs, char *to_split, int *i, int *j) { (*i)++; (*j) = 0; (*strs)[(*i)] = malloc(sizeof(char) * (ft_strlen(to_split) + 1)); - if ((*strs)[(*i)]) + if (!(*strs)[(*i)]) return (1); return (0); } -int get_strs(char *to_split, char *charset, char ***strs, int i) +int get_strs(char *to_split, char *charset, char ***strs, int *i) { int j; int x; int y; x = -1; - (*strs)[i] = malloc(sizeof(char) * (ft_strlen(to_split) + 1)); - if (!(*strs)[i]) + j = 0; + (*strs)[(*i)] = malloc(sizeof(char) * (ft_strlen(to_split) + 1)); + if (!(*strs)[(*i)]) return (1); while (to_split[++x]) { @@ -43,12 +52,12 @@ int get_strs(char *to_split, char *charset, char ***strs, int i) { y = 0; x++; - if (ft_strlen((*strs)[i]) > 0) - if (new_strs(strs, to_split, &i, &j)) + if (ft_strlen((*strs)[(*i)]) > 0) + if (new_strs(strs, to_split, i, &j)) return (1); } } - (*strs)[i][j++] = to_split[x]; + (*strs)[(*i)][j++] = to_split[x]; } return (0); } @@ -62,12 +71,24 @@ char **ft_split_charset(char *to_split, char *charset) if (!strs) return (NULL); i = 0; - if (get_strs(to_split, charset, &strs, i)) + if (get_strs(to_split, charset, &strs, &i)) { i = -1; while (strs[++i]) free(strs[i]); free(strs); } + strs[i + 1] = NULL; return (strs); } + +/*int main(int argc, char **argv) +{ + char **strs; + if (argc == 3) + strs = ft_split_charset(argv[1], argv[2]); + int i = -1; + while (strs[++i]) + printf("%s\n", strs[i]); + return (0); +}*/