Помогите с задачкой на си
Помогите пж решить задачку на си
Задача такая:
Нахождение количества символов между концом одной и началом другой заданной последовательности, например “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.