diff options
Diffstat (limited to 'ft_strnstr.c')
| -rw-r--r-- | ft_strnstr.c | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/ft_strnstr.c b/ft_strnstr.c new file mode 100644 index 0000000..f7042d6 --- /dev/null +++ b/ft_strnstr.c @@ -0,0 +1,113 @@ +/* +Libft Copyright (C) 2026 yctct + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + unsigned long i; + int j; + + if (ft_strlen(little) <= 0) + return ((char *)(big)); + i = 0; + while (big[i] != '\0' && i < len) + { + if (big[i] == little[0]) + { + j = 0; + while (big[i + j] == little[j] && little[j] && (i + j) < len) + j++; + if (little[j] == '\0') + return ((char *)(&big[i])); + } + i++; + } + return (NULL); +} +/* +#include <bsd/string.h> +#include <stdio.h> +#include <string.h> + +int main(void) +{ + const char *largestring = "Foo Bar Caz"; + const char *smallstring = "Bar"; + const char *empty_smallstring = ""; + const char *largestring2 = "Foo Baz Caz"; + const char *smallstring2 = "Bar"; + const char *largestring3 = "Foo Bar Baz"; + const char *smallstring3 = "Baz"; + + printf(" the big string is: %s\n", largestring); + printf("the small string is: %s\n", smallstring); + printf(" strnstr: %s\n", +strnstr(largestring, smallstring, 7)); + printf(" ft_strnstr: %s\n", +ft_strnstr(largestring, smallstring, 7)); + printf("---------------------------------- +---------------------------------\n"); + printf("When the small string is empty, + the function returns the big string\n"); + printf(" the big string is: %s\n", largestring); + printf("the small string is: %s\n", empty_smallstring); + printf(" strnstr: %s\n", +strnstr(largestring, empty_smallstring, 7)); + printf(" ft_strnstr: %s\n", +ft_strnstr(largestring, empty_smallstring, 7)); + printf("------------------------------ +-------------------------------------\n"); + printf("When the little string occurs +nowhere in big, NULL is returned\n"); + printf(" the big string is: %s\n", largestring2); + printf("the small string is: %s\n", smallstring2); + printf(" strnstr: %s\n", +strnstr(largestring2, smallstring2, 7)); + printf(" ft_strnstr: %s\n", +ft_strnstr(largestring2, smallstring2, 7)); + printf("------------------------------- +------------------------------------\n"); + printf("When the little string occurs +at the end of big\n"); + printf(" the big string is: %s\n", largestring3); + printf("the small string is: %s\n", smallstring3); + printf(" strnstr: %s\n", +strnstr(largestring3, smallstring3, 11)); + printf(" ft_strnstr: %s\n", +ft_strnstr(largestring3, smallstring3, 11)); + printf("----------------------------------- +--------------------------------\n"); + printf("When length is smaller than +necessary to print little\n"); + printf(" the big string is: %s\n", largestring3); + printf("the small string is: %s\n", smallstring3); + printf(" strnstr: %s\n", +strnstr(largestring3, smallstring3, 10)); + printf(" ft_strnstr: %s\n", +ft_strnstr(largestring3, smallstring3, 10)); + printf("---------------------------- +---------------------------------------\n"); + printf("When length is zero\n"); + printf(" the big string is: %s\n", largestring3); + printf("the small string is: %s\n", smallstring3); + printf(" strnstr: %s\n", +strnstr(largestring3, smallstring3, 0)); + printf(" ft_strnstr: %s\n", +ft_strnstr(largestring3, smallstring3, 0)); +} +*/ |
