Реализация функции strstr - C (СИ)
Формулировка задачи:
Помогите реализовать функцию strstr
int mystrstr(const char a[],const char b[]) { int i, j, k; for(i = 0; a[i] != '\0'; i++) { for(i = j, k = 0; b[k] != '\0' && a[j] == b[k]; j++, k++) ; if(k > 0 && b[k] == '\0') return 1; else return 0; } }
Решение задачи: «Реализация функции strstr»
textual
Листинг программы
char * strstr (const char * haystack, const char * needle) { char * needle_ptr = NULL, * haystack_ptr = NULL; if (haystack == NULL || needle == NULL) return NULL; while (*haystack) { if (*haystack == *needle) { int trigger_out = 1; needle_ptr = needle; haystack_ptr = haystack; while (*needle_ptr && *haystack_ptr) { trigger_out = trigger_out && (*needle_ptr == *haystack_ptr); } if (trigger_out) return haystack; } ++haystack; } return NULL; }
Объяснение кода листинга программы
- Функция
strstr
принимает два аргумента типаconst char *
:haystack
(строка, в которой ищется подстрока) иneedle
(подстрока, которую необходимо найти). - Если хотя бы один из аргументов равен
NULL
, функция возвращаетNULL
. - В противном случае функция начинает поиск подстроки, итерируя по символам строки
haystack
. - Если найденный символ равен символу подстроки
needle
, функция начинает сравнение следующих символов до тех пор, пока не будет достигнута конечная подстрокаneedle
или не будет найден символ, не равный символу подстрокиneedle
. - Если было найдено полное совпадение подстроки
needle
в строкеhaystack
, функция возвращает адрес первого символа подстроки в строкеhaystack
. - Если полное совпадение подстроки
needle
не было найдено, функция продолжает поиск следующего символа в строкеhaystack
. - Если поиск подстроки
needle
в строкеhaystack
не увенчался успехом, функция возвращаетNULL
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д