Помогите с задачкой на си

Помогите пж решить задачку на си

Задача такая:

Нахождение количества символов между концом одной и началом другой заданной последовательности, например “abcde”, в символьной строке, например “asabcdesadabcdewer”. В данной строке между двумя одинаковыми последовательностями находятся 2 символа


Ответы (1 шт):

Автор решения: nevilad

Можно сделать например так (пояснения в комментариях):

int main()
{
  const char str[] = "asabcdesadabcdewer";
  const char subStr[] = "abcde";

  //strstr ищет подстроку в строке
  const char* p1 = strstr(str, subStr);
  if (p1)
  {
    //Если подстрока найдена один раз, прибавляем к ее позиции длину
    //искомой последовательности и ищем еще раз
    const char* pSearchBegin = p1 + strlen(subStr);
    const char* p2 = strstr(pSearchBegin, subStr);
    if (p2)
    {
      //Если подстрока найдена второй раз, вычитаем из второй позиции первую
      ptrdiff_t diff = p2 - pSearchBegin;
      printf("%td", diff);
    }
  }
  return 0;
}

И как правильно подметили в комментариях, в данном примере между двумя подстроками 3 символа, а не 2.

→ Ссылка