diff --git a/C_09/git/ex02/.ft_split.c.swp b/C_09/git/ex02/.ft_split.c.swp new file mode 100644 index 0000000..2d7bd04 Binary files /dev/null and b/C_09/git/ex02/.ft_split.c.swp differ diff --git a/C_09/git/ex02/ft_split.c b/C_09/git/ex02/ft_split.c index 11a5d56..d31dc8b 100644 --- a/C_09/git/ex02/ft_split.c +++ b/C_09/git/ex02/ft_split.c @@ -6,7 +6,7 @@ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/22 18:14:04 by gbaconni #+# #+# */ -/* Updated: 2021/08/22 18:30:07 by gbaconni ### ########.fr */ +/* Updated: 2021/08/23 18:02:47 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,19 +23,79 @@ static int ft_strlen(char *str) return (p_str - str); } -char **ft_split(char *str, char *charset) +static char *ft_strncpy(char *dest, char *src, unsigned int n) { - char *p_str; - char **strs; - int size; + 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') + 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 = (char **) malloc((size) * sizeof(char)); + strs[i] = (char *) malloc(sizeof(char)); + strs[i][0] = '\0'; return (strs); } diff --git a/C_09/git/ex02/main.c b/C_09/git/ex02/main.c index 8d4a5ee..7299fa0 100644 --- a/C_09/git/ex02/main.c +++ b/C_09/git/ex02/main.c @@ -6,7 +6,7 @@ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/18 10:50:59 by gbaconni #+# #+# */ -/* Updated: 2021/08/22 18:19:18 by gbaconni ### ########.fr */ +/* Updated: 2021/08/23 16:17:56 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,8 +19,8 @@ char **ft_split(char *str, char *charset); int main(void) { - char *str[32]; - char *charset[32]; + char str[32]; + char charset[32]; char **result; printf("Input String [Max 32]: "); @@ -28,6 +28,6 @@ int main(void) printf("Input Charset [Max 32]: "); scanf("%s", charset); result = ft_split(str, charset); - printf("str=%s charset=%s result=%s (ft_split)\n", str, charset, result); + printf("str=%s charset=%s (ft_split)\n", str, charset); return (0); }