ft_strtrim.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* ft_strtrim.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <marvin@42.fr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2022/07/11 15:39:22 by gychoi #+# #+# */ 9 /* Updated: 2022/07/15 17:42:23 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "libft.h" 14 15 static int check_set(char const *set, char ch) 16 { 17 size_t k; 18 19 k = 0; 20 while (set[k] != '\0') 21 { 22 if (set[k] == (char)ch) 23 return (1); 24 k++; 25 } 26 return (0); 27 } 28 29 char *ft_strtrim(char const *s1, char const *set) 30 { 31 size_t slen; 32 size_t i; 33 size_t j; 34 char *string; 35 36 if (s1 == NULL || set == NULL) 37 return (NULL); 38 slen = ft_strlen(s1); 39 i = 0; 40 while (s1[i] != '\0' && check_set(set, s1[i])) 41 i++; 42 while (i <= slen && check_set(set, s1[slen - 1])) 43 slen--; 44 if (i > slen) 45 string = malloc(sizeof(char)); 46 else 47 string = malloc(sizeof(char) * slen - i + 1); 48 if (!string) 49 return (NULL); 50 j = 0; 51 while (i < slen) 52 string[j++] = s1[i++]; 53 string[j] = '\0'; 54 return (string); 55 }