diff options
Diffstat (limited to 'libft/src/ft_strnstr.c')
-rw-r--r-- | libft/src/ft_strnstr.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/libft/src/ft_strnstr.c b/libft/src/ft_strnstr.c new file mode 100644 index 0000000..583026e --- /dev/null +++ b/libft/src/ft_strnstr.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* LE - / */ +/* / */ +/* ft_strnstr.c .:: .:/ . .:: */ +/* +:+:+ +: +: +:+:+ */ +/* By: rbousset <marvin@le-101.fr> +:+ +: +: +:+ */ +/* #+# #+ #+ #+# */ +/* Created: 2019/10/10 00:23:15 by rbousset #+# ## ## #+# */ +/* Updated: 2019/10/13 08:34:35 by rbousset ### #+. /#+ ###.fr */ +/* / */ +/* / */ +/* ************************************************************************** */ + +#include "libft.h" +#include <stddef.h> +#include <inttypes.h> + +char + *ft_strnstr(const char *haystack, const char *needle, size_t len) +{ + unsigned long i; + unsigned long j; + char *hay_ptr; + char *nee_ptr; + + hay_ptr = (char*)haystack; + nee_ptr = (char*)needle; + i = 0; + if (!nee_ptr[0]) + return (hay_ptr); + while (hay_ptr[i] && i < len) + { + j = 0; + while (nee_ptr[j] == hay_ptr[i + j] && (i + j) < len) + { + if (!nee_ptr[j + 1]) + return (hay_ptr + i); + j++; + } + if (!hay_ptr[i + 1] && !j) + return (0); + i++; + } + return (0); +} |