#include int char_is_separator(char c, char *charset) { int i; i = 0; while (charset[i] != '\0') { if (c == charset[i]) return (1); i++; } if (c == '\0') return (1); return (0); } int count_words(char *str, char *charset) { int i; int words; words = 0; i = 0; while (str[i] != '\0') { if (char_is_separator(str[i + 1], charset) == 1 && char_is_separator(str[i], charset) == 0) words++; i++; } return (words); } void write_word(char *dest, char *from, char *charset) { int i; i = 0; while (char_is_separator(from[i], charset) == 0) { dest[i] = from[i]; i++; } dest[i] = '\0'; } void write_split(char **split, char *str, char *charset) { int i; int j; int word; word = 0; i = 0; while (str[i] != '\0') { if (char_is_separator(str[i], charset) == 1) i++; else { j = 0; while (char_is_separator(str[i + j], charset) == 0) j++; split[word] = (char*)malloc(sizeof(char) * (j + 1)); write_word(split[word], str + i, charset); i += j; word++; } } } char **my_split(char *str, char *charset) { char **split; int words; words = count_words(str, charset); split = (char**)malloc(sizeof(char*) * (words + 1)); split[words] = 0; write_split(split, str, charset); return (split); }