Подскажите пожалуйста как доделать функцию.
Было дано задание изобрести свой костыль) Функцию, которая искала бы подстроку в строке и возвращала позицию её первого вхождения.
Вот мой код, что получился:
int strstr(const char *str, const char *pattern) {
const char *st = str; // присваеваем указателю адрес строки
const char *pa = pattern; //присваеваем указателю адресс паттерна, который будем искать в строке
while (*st){ // начинаем пробегаться по каждой ячейке строки
++st;
if( *st == *pa){ //как только находит символ в строке, который равен первому символу паттерна запускаем цикл
int i = 0; //счётчик итераций, что бы можно было вернуть указатель строки на исходное место
for(i;*st == *pa;i++){ //этим циклом пробегаемся по следующим символам строки и паттерна и проверяем их равенство
++st;
++pa;
} //цикл завершится когда либо паттерн достигнет конца, либо строка. или какие-либо последующие символы не равны
if(*pa == 0){ //если паттерн достиг конца, то получаем позицию вхождения
return st-i; //вот тут не компилируется((
}
pa-i; //сбрасываем паттерн на исходное положение
st-i; // сбрасываем строку на исходное положение
}
}
return -1; //возвращаем -1, если подстрока не была найдена
}
Проблема в том, что он не компилируется, т.к. от char нельзя отнимать int. Какого типа сделать i, что бы можно было его отнять от char?
char i = 0; пробывал. Ошибка почему-то происходит такая же. invalid conversion from ‘const char*’ to ‘int’
И проверьте пожалуйста мою логику)) Всё ли верно?)