Реализация функции 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;
}

Объяснение кода листинга программы

  1. Функция strstr принимает два аргумента типа const char *: haystack (строка, в которой ищется подстрока) и needle (подстрока, которую необходимо найти).
  2. Если хотя бы один из аргументов равен NULL, функция возвращает NULL.
  3. В противном случае функция начинает поиск подстроки, итерируя по символам строки haystack.
  4. Если найденный символ равен символу подстроки needle, функция начинает сравнение следующих символов до тех пор, пока не будет достигнута конечная подстрока needle или не будет найден символ, не равный символу подстроки needle.
  5. Если было найдено полное совпадение подстроки needle в строке haystack, функция возвращает адрес первого символа подстроки в строке haystack.
  6. Если полное совпадение подстроки needle не было найдено, функция продолжает поиск следующего символа в строке haystack.
  7. Если поиск подстроки needle в строке haystack не увенчался успехом, функция возвращает NULL.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы