Kaynağa Gözat

feat(gblibc): add strstr()

greatbridf 2 yıl önce
ebeveyn
işleme
2d34baf675
2 değiştirilmiş dosya ile 29 ekleme ve 0 silme
  1. 1 0
      gblibc/include/string.h
  2. 28 0
      gblibc/src/string.c

+ 1 - 0
gblibc/include/string.h

@@ -27,6 +27,7 @@ char* strchr(const char* str, int character);
 char* strrchr(const char* str, int character);
 char* strchrnul(const char* str, int character);
 size_t strcspn(const char* str1, const char* str2);
+char* strstr(const char* str1, const char* str2);
 
 char* strcpy(char* dst, const char* src);
 char* strncpy(char* dst, const char* src, size_t n);

+ 28 - 0
gblibc/src/string.c

@@ -175,3 +175,31 @@ size_t strcspn(const char* str1, const char* str2)
     }
     return ret;
 }
+
+char* strstr(const char* str1, const char* str2)
+{
+    const char* p = str1;
+
+    while (*p) {
+        if (*p != *str2) {
+            ++p;
+            continue;
+        }
+
+        const char* p1 = p;
+        const char* q = str2;
+        while (*q) {
+            if (*p1 != *q)
+                break;
+            ++p1;
+            ++q;
+        }
+        if (!*q)
+            break;
+        p = p1;
+    }
+
+    if (*p)
+        return (char*)p;
+    return NULL;
+}