summaryrefslogtreecommitdiff
path: root/rushs/tinyprintf/my_strstr
diff options
context:
space:
mode:
Diffstat (limited to 'rushs/tinyprintf/my_strstr')
-rw-r--r--rushs/tinyprintf/my_strstr/my_strstr.c34
-rw-r--r--rushs/tinyprintf/my_strstr/my_strstr.h6
2 files changed, 40 insertions, 0 deletions
diff --git a/rushs/tinyprintf/my_strstr/my_strstr.c b/rushs/tinyprintf/my_strstr/my_strstr.c
new file mode 100644
index 0000000..36ac439
--- /dev/null
+++ b/rushs/tinyprintf/my_strstr/my_strstr.c
@@ -0,0 +1,34 @@
+#include "my_strstr.h"
+
+#include <stddef.h>
+
+int my_strstr(const char *haystack, const char *needle)
+{
+ if (needle == NULL || *needle == '\0')
+ {
+ return 0;
+ }
+
+ for (int i = 0; haystack[i]; i++)
+ {
+ if (haystack[i] == needle[0])
+ {
+ int j;
+ for (j = 0;
+ haystack[i + j] && needle[j] && needle[j] == haystack[i + j];
+ j++)
+ {
+ continue;
+ }
+ if (needle[j] == '\0')
+ {
+ return i;
+ }
+ if (haystack[i + j] == '\0')
+ {
+ return -1;
+ }
+ }
+ }
+ return -1;
+}
diff --git a/rushs/tinyprintf/my_strstr/my_strstr.h b/rushs/tinyprintf/my_strstr/my_strstr.h
new file mode 100644
index 0000000..1b734b2
--- /dev/null
+++ b/rushs/tinyprintf/my_strstr/my_strstr.h
@@ -0,0 +1,6 @@
+#ifndef MY_STRSTR_H
+#define MY_STRSTR_H
+
+int my_strstr(const char *haystack, const char *needle);
+
+#endif /* ! MY_STRSTR_H */