/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_split.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/25 14:00:13 by hulamy #+# #+# */ /* Updated: 2019/12/03 19:07:08 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ /* ** return an array of string with each word found in str, with c as separator */ #include size_t ft_strlen(const char *str) { size_t i; write (1, "gr\n", 3); i = 0; while (str[i]) i++; return (i); } char *ft_substr(char const *s, unsigned int start, size_t len) { char *str; size_t i; if (!s) return (NULL); if (ft_strlen(s) < start) return (""); if (!(str = (char *)malloc(sizeof(char) * (len + 1)))) return (NULL); i = 0; while (i < len && s[start]) str[i++] = s[start++]; str[i] = '\0'; return (str); } char **ft_split(char const *s, char c); //int main(int ac, char **av) int main(void) { char **str; int i; char *s; char c; // if (ac == 3) // { i = 0; // s = av[1]; // c = av[2][0]; s = ""; c = 'c'; if ((str = ft_split(s, c))) { while (str[i]) printf("%s\n", str[i++]); } // } return (0); } //#include "libft.h" static int ft_count_word(char const *s, char c) { int i; int words; write (1, "gt\n", 3); i = 0; words = 0; while (s[i]) { if (s[i] != c) { words++; while (s[i] && s[i] != c) i++; } else i++; } return (words); } void *ft_free(char **array) { while (array) free(array++); return (NULL); } char **ft_split(char const *s, char c) { char **array; int i; int j; int len; write (1, "gu\n", 3); if (!s || !c || !(i = ft_count_word(s, c))) return (NULL); if (!(array = malloc(sizeof(char *) * (i + 1)))) return (NULL); array[i] = 0; i = -1; j = 0; while (s[++i]) { if (s[i] != c) { len = 0; while (s[i + len] && s[i + len] != c) len++; if (!(array[j++] = ft_substr(s, i, len))) return (ft_free(array)); i = i + len - 1; } } return (array); }