Skip to content

Instantly share code, notes, and snippets.

@yclim95
Last active June 15, 2022 02:22
Show Gist options
  • Save yclim95/bed9da96cbd06ec38e80bbda5d31c880 to your computer and use it in GitHub Desktop.
Save yclim95/bed9da96cbd06ec38e80bbda5d31c880 to your computer and use it in GitHub Desktop.
ft_strtrim() in c
#include <stdio.h>
#include <stdlib.h>

size_t	ft_strlen(const char *s)
{
	size_t	counter;

	counter = 0;
	while(s[counter] != '\0')
		counter++;
	return (counter);
}

char	*ft_strchr(const char *s, int c)
{
	while (*s != c)
	{
		if (*s == '\0')
			return (0);
		s++;
	}
	return ((char *)s);
}

void	*ft_memcpy(void *dest, const void *src, size_t n)
{
	char *pdest;
	const char *psrc;

	pdest = dest;
	psrc = src;
	if (!dest && !src)
		return (0);
	while (n-- > 0)
	{
		*pdest = *psrc;
		pdest++;
		psrc++;
	}
	return (dest);
}

char	*ft_strtrim(char const *s1, char const *set)
{
	size_t	len;
	char	*p_trim;
	
	if (!s1 || !set)
		return (NULL);
	while (*s1 && ft_strchr(set, *s1) != 0) //inrement until characters not found
		s1++;
	len = ft_strlen(s1);
	printf("len: %ld\n", len);
	while (len && ft_strchr(set, s1[len - 1]) != 0) //decrement len until character not found
		len--;
	printf("len: %ld\n", len);
	p_trim = malloc(sizeof(char) * (len + 1));
	if (!p_trim)
		return (NULL);
	ft_memcpy(p_trim, s1, len);
	p_trim[len] = '\0';
	printf("len: %ld\n", len);
	return (p_trim);
}

int main()
{
    char const *s1 = "123abc   bla da   lalada";
    char const *set = "123abc";
    char *p_trim;
    p_trim = ft_strtrim(s1, set);
    printf("test: %s\n", p_trim);

    return 0;
}
len: 18
len: 17
len: 17
test:    bla da   lalad
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment