Не получается выполнить задачу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Напишите функцию string in(), которая принимает в качестве аргументов два указателя на строки. Если вторая строка содержится внутри первой, функция должна возвратить адрес, с которого начинается вторая строка в первой строке. Например, вызов string_in ("данные", "ан") возвратит адрес символа ''а'' в строке данные. В противном случае функция должна возвратить нулевой указатель. Протестируйте функцию в завершенной программе, которая использует цикл для передачи входных значений созданной функции

Решение задачи: «Не получается выполнить задачу»

textual
Листинг программы
char *string_in(char *s, char *t)
{  int L = strlen(t), i;
   while (*s) {
     for(i=0; i  < L; i++)
       if (s[i]!=t[i]) break;
     if (i==L) return s;
     s++;
   }
   return NULL;
}

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

  1. В функции string_in передаются два аргумента типа char *: s и t.
  2. Переменная L инициализируется значением strlen(t).
  3. В цикле while происходит итерация по символам строки s.
  4. В каждой итерации цикла for происходит сравнение символов строк s и t.
  5. Если найден первый символ, который не совпадает с соответствующим символом строки t, то цикл for прерывается с помощью оператора break.
  6. Если цикл for выполнен полностью, то это означает, что строки s и t являются идентичными, и функция возвращает s.
  7. Если найден первый символ, который не совпадает с соответствующим символом строки t, то функция возвращает NULL.
  8. Если цикл while завершается, то это означает, что строка s не содержит подстроку t, и функция возвращает NULL.

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

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