diff options
Diffstat (limited to 'libft/ft_strnstr.c')
-rw-r--r-- | libft/ft_strnstr.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libft/ft_strnstr.c b/libft/ft_strnstr.c new file mode 100644 index 0000000..93427d2 --- /dev/null +++ b/libft/ft_strnstr.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kdx <kdx @student.42angouleme.fr +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 00:07:22 by kdx #+# #+# */ +/* Updated: 2022/10/14 02:26:20 by kdx ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + size_t i; + size_t little_len; + size_t cmp_len; + + little_len = ft_strlen(little); + if (little_len == 0 || (big == little && little_len <= len)) + return ((char *)big); + if (len == 0) + return (NULL); + i = 0; + while (big[i] != '\0' && i < len && little_len <= len - i) + { + cmp_len = len - i; + if (little_len < cmp_len) + cmp_len = little_len; + if (ft_strncmp(big + i, little, cmp_len) == 0) + return ((char *)big + i); + i += 1; + } + return (NULL); +} |