есть такой код
#include <stdio.h>
#include <string.h> // для проверки с оригиналом
char *ft_strstr(char *str, char *to_find)
{
int i1;
int i2;
i1 = 0;
i2 = 0;
while(str[i1] != '\0') //запускаю на проверку строку
{
if(str[i1] == to_find[i2])
{
i2++;
if(to_find[i2] == '\0')
break;
}
else
i2 = 0;
i1++;
}
return (&str[i1 - i2 + 1]);
}
int main ()
{
char str[] = "shool sholle elshool";
char to_find[] = "ol";
printf("%s", strstr(str, to_find));
printf("\n%s", ft_strstr(str, to_find));
return 0;
выхлоп получается такой:
ol sholle elshool(стандартная strstr)
olle elshool (моя strstr)
проблема заключается в том, что функция проверяет значение и когда она видит два 'o' один она принимает за соответствие, а второе 'o' она пропускает потому что оно не соответствует её второму символу и бракует его. Соответственно она пропускает скан этого символа и идёт к следующему. Как поправить эту ошибку? пробовал способ с препроверкой следующего значения, но не помогло...
хелп плиз!