Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr) - C (СИ)
Формулировка задачи:
Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr).Помогите плииз
Решение задачи: «Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr)»
textual
Листинг программы
char* pos(char* str, const char* substr)
{
char* t;
const char* s;
for (; *str; ++str)
{
for (t = str, s = substr; *t && *s && (*t == *s); ++t, ++s);
if (*s == 0)
{
break;
}
}
return str;
}
Объяснение кода листинга программы
- Входные данные функции:
- str - указатель на начало строки, в которой ищется подстрока.
- substr - указатель на начало подстроки, которую необходимо найти.
- Создаются две временные переменные:
- t - указывает на текущий символ в строке str.
- s - указывает на текущий символ в подстроке substr.
- Начинается цикл, который выполняется до тех пор, пока:
- str не станет равно NULL (т.е. не будет достигнут конец строки).
- s не станет равно NULL (т.е. не будет достигнут конец подстроки).
- t и s не будут указывать на один и тот же символ (т.е. текущий символ строки не будет равен текущему символу подстроки).
- Если s станет равно NULL (т.е. будет достигнут конец подстроки), то выполняется действие:
- s устанавливается равным NULL.
- str устанавливается равным t.
- функция завершается и возвращает значение str.
- Если условие в пункте 3 не выполняется, то выполняется следующее действие:
- t и s сдвигаются на следующий символ.
- Цикл продолжается до тех пор, пока не будет выполнено условие в пункте 4.
- Возвращаемое значение функции - указатель на первый символ подстроки в строке (т.е. на символ, на котором функция завершилась).