Найти в тексте все вхождения данного образца - C (СИ)
Формулировка задачи:
Здравствуйте! Очень нужна помощь. Задание: найти в тексте все вхождения данного образца. То есть это просто поиск подстроки в строке? Необходимо написать параллельную программу. Помогите пожалуйста, очень нужно
Решение задачи: «Найти в тексте все вхождения данного образца»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
size_t subs_count(const char * str, const char * sub) {
return ( str = strstr(str, sub) ) ? 1 + subs_count(str + 1, sub) : 0;
}
typedef char str_t[256];
#define get_string(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
int main(void) {
str_t str, sub;
while ( printf("String: ") && get_string(str) && printf("Search for: ") && get_string(sub) )
printf("%lu meetings.\n", subs_count(str, sub));
return 0;
}
Объяснение кода листинга программы
- В этом коде определена функция
subs_count, которая подсчитывает количество вхождений подстроки в строке. Функция использует функциюstrstrдля поиска первого вхождения подстроки в строке. Если подстрока найдена, функция рекурсивно вызывает саму себя для оставшейся части строки, увеличивая счетчик. Если подстрока не найдена, функция возвращает 0. - Определен тип
str_tкак массив символов фиксированного размера 256. - В функции
mainсоздаются две переменные типаstr_t-strиsub. - В цикле
whileзапрашиваются две строки - исходная строка и строка для поиска. - Количество вхождений подстроки выводится на экран.
- Код выполняется до тех пор, пока пользователь вводит две строки.
- Возвращаемое значение функции
main- 0, что означает успешное завершение программы.