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