Найти в тексте все вхождения данного образца - 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;
}

Объяснение кода листинга программы

  1. В этом коде определена функция subs_count, которая подсчитывает количество вхождений подстроки в строке. Функция использует функцию strstr для поиска первого вхождения подстроки в строке. Если подстрока найдена, функция рекурсивно вызывает саму себя для оставшейся части строки, увеличивая счетчик. Если подстрока не найдена, функция возвращает 0.
  2. Определен тип str_t как массив символов фиксированного размера 256.
  3. В функции main создаются две переменные типа str_t - str и sub.
  4. В цикле while запрашиваются две строки - исходная строка и строка для поиска.
  5. Количество вхождений подстроки выводится на экран.
  6. Код выполняется до тех пор, пока пользователь вводит две строки.
  7. Возвращаемое значение функции main - 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы