diff --git a/str_lib.c b/str_lib.c index fa1d7db..c2b2710 100644 --- a/str_lib.c +++ b/str_lib.c @@ -7,7 +7,16 @@ int mystrlen(const char *s) { - // + // + if (s == NULL) { + return -1; // или 0, в зависимости от требований + } + + int length = 0; + while (s[length] != '\0') { + length++; + } + return length; } /* @@ -17,7 +26,37 @@ mystrlen(const char *s) int mystr_idx(const char *s1, const char *s2) { - // - return -1; + // + if (s1 == NULL || s2 == NULL) { + return -1; + } + + int len1 = mystrlen(s1); + int len2 = mystrlen(s2); + + // Если подстрока пустая, возвращаем 0 + if (len2 == 0) { + return 0; + } + + // Если подстрока длиннее строки, она не может содержаться в ней + if (len2 > len1) { + return -1; + } + + // Поиск подстроки + for (int i = 0; i <= len1 - len2; i++) { + int j; + for (j = 0; j < len2; j++) { + if (s1[i + j] != s2[j]) { + break; + } + } + // Если дошли до конца подстроки - нашли совпадение + if (j == len2) { + return i; + } + } + + return -1; } -