lib/libft/ft_strtrim.c

51 lines
879 B
C

static i32
get_start(const char *str, char const *set) {
i32 check;
for (i32 i = 0; str[i]; i++) {
check = 0;
for (i32 y = 0; set[y]; y++)
if (str[i] == set[y])
check = 1;
if (check == 0)
return (i);
}
return (0);
}
static i32
get_end(const char *str, char const *set) {
i32 check;
for (i32 i = ft_strlen(str) - 1; i > 0; i--) {
check = 0;
for (i32 y = 0; set[y]; y++)
if (str[i] == set[y])
check = 1;
if (check == 0)
return (i + 1);
}
return (0);
}
char *
ft_strtrim(char const *s1, char const *set) {
char *str;
if (s1 == NULL || set == NULL)
return (NULL);
i32 start = get_start(s1, set);
i32 end = get_end(s1, set);
str = malloc(end - start + 1);
if (str == NULL)
return (NULL);
i32 i = 0;
for (; start < end; i++) {
str[i] = s1[start];
i++;
start++;
}
str[i] = '\0';
return (str);
}