Top.Mail.Ru
Ответы

Как в си с помощью библиотеке string.h найти кол-во вхождений подстроки в строке. Буду очень благодарен за объяснение

Не могу разобраться через что это можно сделать. Буду благодарен за любую помощь

По дате
По рейтингу
Аватар пользователя
Просветленный
14лет

#include <stdio.h>
#include <string.h>

void main()
{
char *strSrc = "12hellohello 345 hello hell"; //Строка в которой ищем
char *strFnd = "hell"; //Строка для поиска
char *strSrcEnd = strSrc + strlen(strSrc); //Вычисляем указатель на конечный элемент в строке в которой ищем
int fndLen = strlen(strFnd); //Вычисляем длину строки для поиска
int count = 0; //Счетик совпадений

char *p=strSrc; //Получаем временный указатель на начало строки в которой ищем

while(p && p < strSrcEnd) //Цикл, пока p не станет равным null и p не вышел за пределы конца строки
{
p=strstr(p, strFnd); //Пытаемся найти подстроку. strstr возвращает указатель на подстроку, если её нашла или null если нет
if (p) {count++; p+=fndLen;} //Если подстрока найдена - увеличиваем счётчик на 1, сдвигаем указатель на длину строки которую ищем
} //Конец цикла

printf("%s found %d times", strFnd, count); //Выводим результат hell found 4 times)
}



Видео по теме