/ fdf / fdf / libft / ft_strtrim.c
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  }