/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_split.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/22 18:14:04 by gbaconni #+# #+# */ /* Updated: 2021/08/23 18:02:47 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ #include #include static int ft_strlen(char *str) { char *p_str; p_str = str; while (*p_str != '\0') p_str++; return (p_str - str); } static char *ft_strncpy(char *dest, char *src, unsigned int n) { unsigned int i; i = 0; while (i < n && src[i] != '\0') { dest[i] = src[i]; i++; } while (i < n) { dest[i] = '\0'; i++; } return (dest); } static int ft_is_charset(char c, char *charset) { char *p_charset; int r; r = 1; p_charset = charset; while (*p_charset != '\0') r &= (*p_charset++ == c); return (r); } static int ft_split_len(char *str, char *charset) { char *p_str; int size; size = 2; p_str = str; while (*p_str != '\0') { if (ft_is_charset(*p_str++, charset) == 1) size++; } return (size); } char **ft_split(char *str, char *charset) { char **strs; char *p_str; char *start; int size; int i; size = ft_split_len(str, charset); strs = malloc((size) * sizeof(strs)); p_str = str; start = str; i = 0; while (*p_str != '\0') { if (ft_is_charset(*p_str, charset) == 1) { size = end - begin; if (size > 0) { strs[i++] = (char *) malloc((size + 1) * sizeof(char)); ft_strncpy(strs[i], str + start, size); } start = p_str + 1; } p_str++; } strs[i] = (char *) malloc(sizeof(char)); strs[i][0] = '\0'; return (strs); }