Не получается выполнить задачу - 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;
}
Объяснение кода листинга программы
- В функции
string_inпередаются два аргумента типаchar *:sиt. - Переменная
Lинициализируется значениемstrlen(t). - В цикле
whileпроисходит итерация по символам строкиs. - В каждой итерации цикла
forпроисходит сравнение символов строкsиt. - Если найден первый символ, который не совпадает с соответствующим символом строки
t, то циклforпрерывается с помощью оператораbreak. - Если цикл
forвыполнен полностью, то это означает, что строкиsиtявляются идентичными, и функция возвращаетs. - Если найден первый символ, который не совпадает с соответствующим символом строки
t, то функция возвращаетNULL. - Если цикл
whileзавершается, то это означает, что строкаsне содержит подстрокуt, и функция возвращаетNULL.