split rendu plus lisible avec function free a part

This commit is contained in:
Hugo LAMY
2019-12-04 16:27:47 +01:00
parent dc0a5d69d9
commit be0adfee35

View File

@@ -6,7 +6,7 @@
/* By: hulamy <marvin@42.fr> +#+ +:+ +#+ */ /* By: hulamy <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2019/12/04 15:51:26 by hulamy #+# #+# */ /* Created: 2019/12/04 15:51:26 by hulamy #+# #+# */
/* Updated: 2019/12/04 15:51:28 by hulamy ### ########.fr */ /* Updated: 2019/12/04 16:26:37 by hulamy ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -88,6 +88,13 @@ static int count(char const *s, char c)
return (words); return (words);
} }
void *ft_free(char **array)
{
while (array)
free(array++);
return (NULL);
}
char **ft_split(char const *s, char c) char **ft_split(char const *s, char c)
{ {
char **array; char **array;
@@ -97,18 +104,15 @@ char **ft_split(char const *s, char c)
w = 0; w = 0;
if (!s || !c || !(array = malloc(sizeof(char *) * (count(s, c) + 1)))) if (!s || !c || !(array = malloc(sizeof(char *) * (count(s, c) + 1))))
return (NULL); return (NULL);
while (*s && !(len = 0)) while (*s)
{ {
len = 0;
if (*s != c) if (*s != c)
{ {
while (s[len] && s[len] != c) while (s[len] && s[len] != c)
len++; len++;
if (!(array[w++] = ft_substr(s, 0, len))) if (!(array[w++] = ft_substr(s, 0, len)))
{ return (ft_free(array));
while (array)
free(array++);
return (NULL);
}
} }
s += len ? len : 1; s += len ? len : 1;
} }