39 lines
1.4 KiB
C
39 lines
1.4 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* ft_strnstr.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: tosuman <timo42@proton.me> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2023/05/22 17:05:27 by tosuman #+# #+# */
|
|
/* Updated: 2023/05/22 17:05:28 by tosuman ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include <stddef.h>
|
|
|
|
size_t ft_strlen(const char *s);
|
|
int ft_memcmp(const void *s1, const void *s2, size_t n);
|
|
|
|
char *ft_strnstr(const char *big, const char *little, size_t len)
|
|
{
|
|
size_t l_len;
|
|
size_t b_len;
|
|
|
|
if ((!big || !little) && len == 0)
|
|
return (0);
|
|
b_len = ft_strlen(big);
|
|
l_len = ft_strlen(little);
|
|
if (b_len < l_len || len < l_len)
|
|
return (0);
|
|
if (b_len - l_len + 1 < len)
|
|
len = b_len - l_len + 1;
|
|
else if (len >= l_len)
|
|
len = len - l_len;
|
|
len += !len;
|
|
while (len--)
|
|
if (!ft_memcmp(big++, little, l_len))
|
|
return ((char *)--big);
|
|
return (0);
|
|
}
|