Skip to content

Instantly share code, notes, and snippets.

@yclim95
Created May 27, 2022 02:03
Show Gist options
  • Save yclim95/a18921b7c1bf353006728e514c70f36f to your computer and use it in GitHub Desktop.
Save yclim95/a18921b7c1bf353006728e514c70f36f to your computer and use it in GitHub Desktop.
ft_strnstrn() in c
#include <stdio.h>

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

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

int	ft_strncmp(const char *s1, const char *s2, size_t n)
{
	unsigned char	us1;
	unsigned char	us2;

	while (n-- > 0)
	{
		us1 = *(unsigned char*)s1++;
		us2 = *(unsigned char*)s2++;
		if (us1 != us2)
			return (us1 - us2);
		if (us1 == '\0')
			return (0);
	}
	return (0);
}


char	*ft_strnstr(const char *big, const char *little, size_t blen)
{
	size_t	l_len;

	if (*little == '\0')
		return (char *)big;
	l_len = ft_strlen(little);

	while (blen-- > l_len && *big)
	{
	    //printf("big:%s\n", big);
		if (ft_strncmp(big, little, l_len) == 0 && *big == *little)
			return (char*)big;
		big++;
	}
	return (NULL);
}



int main()
{
    const char *largestring = "go go yogurt";
    const char *smallstring = "gu";
    char	*ptr;

    ptr = ft_strnstr(largestring, smallstring, 12);
    printf("return(gurt) : %s\n", ft_strnstr(largestring,smallstring,14)); // return(gurt) : gurt
    printf("return(null) : %s\n", ft_strnstr(largestring,smallstring,9)); //return(null) : null
    printf("return(gurt) : %s\n", ft_strnstr(largestring,smallstring,10)); //return(gurt) : gurt
   
   return(0);
}
return(gurt) : gurt
return(null) : (null)
return(gurt) : (null)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment