From 69c0271123c35a9a55128e4a7fd7309987055b6c Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 25 Oct 2025 04:19:08 -0400 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20mystrlen=20=D0=B8=20mystr=5Fidx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- str_lib.c | 66 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/str_lib.c b/str_lib.c index fa1d7db..1f8f9ad 100644 --- a/str_lib.c +++ b/str_lib.c @@ -1,23 +1,55 @@ -#include +#include -/* - * Вернуть длину строки. - * Строки в C -- это массив символов, в конце которого находится нулевой символ ( '\0') +/** + * mystrlen - Вычисляет длину строки. + * @str: Указатель на строку. + * + * Возвращает: Длину строки. */ -int -mystrlen(const char *s) -{ - // +size_t mystrlen(const char *str) { + size_t len = 0; + if (str == NULL) { + return 0; + } + while (str[len] != '\0') { + len++; + } + return len; } -/* - * Найти индекс, с которого строка s2 присутствует в строке s1 - * или -1 +/** + * mystr_idx - Находит первое вхождение подстроки. + * @haystack: Строка, в которой ищется подстрока. + * @needle: Подстрока, которую нужно найти. + * + * Возвращает: Индекс первого вхождения, или -1, если не найдено. */ -int -mystr_idx(const char *s1, const char *s2) -{ - // - return -1; -} +int mystr_idx(const char *haystack, const char *needle) { + if (haystack == NULL || needle == NULL) { + return -1; + } + if (*needle == '\0') { + return 0; + } + size_t h_len = mystrlen(haystack); + size_t n_len = mystrlen(needle); + + if (n_len > h_len) { + return -1; + } + + for (size_t i = 0; i <= h_len - n_len; i++) { + int found = 1; + for (size_t j = 0; j < n_len; j++) { + if (haystack[i + j] != needle[j]) { + found = 0; + break; + } + } + if (found) { + return i; + } + } + return -1; +}