Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
trustguy
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 16
#1

Поиск подстроки в строке с маской - C (СИ)

08.02.2015, 06:36. Просмотров 581. Ответов 3
Метки нет (Все метки)

Суть вот в чем: дан текст и маска. Маска содержит буквы и символ заполнитель *, который заменяет любое сочетание слов, в том числе и пустое. Нужно распечатать все слова, соответствующие маске.

Пример:

Исходный текст: "Она открыла окна настежь".

Результаты для различных значений маски:

*а - Она открыла окна
*кр* - открыла
*а*ь - настежь

Программу необходимо реализовать исключительно с использованием подпрограмм из библиотеки <string.h>, то есть работать со строкой, как с обычным массивом, нельзя.

Добавлено через 13 часов 20 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "stdafx.h"
#include <conio.h>
#include <locale>
#include <string.h>
#define N 50
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, ".1251");
    char *str, *search;
    str = (char*)malloc(N*sizeof(char));
    search = (char*)malloc(N*sizeof(char));
    puts("Введите строку:\n");
    gets_s(str,N);
 
    puts("Введите слова для поиска:\n");
    gets_s(search,N);
 
    printf(strstr(str, search));
    printf("\n");
    
 
    _getch();
 
    return 0;
}
я хотел осуществить поиск через подпрограмму strstr(), но она возвращает следующие результаты:

Пример: введена строка "Она готовила очень вкусные пирожные"
Строка поиска: "го"

Тогда функция вернет строку "готовила очень вкусные пирожные".

Есть ли в C какая-нибудь функция, чтобы возвращалось именно это слово, в котором содержится подстрока. И еще я так и не придумал, что делать с этими звездочками. Ведь в качестве входных данных поиска должна выступать строка вида "го*". Помогите, пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2015, 06:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск подстроки в строке с маской (C (СИ)):

Поиск подстроки в строке - C (СИ)
Нужно сделать поиск подстроки в строке на С. Без использования встроенной функции поиска

Поиск подстроки в строке - C (СИ)
Задача заключается в том, что есть один массив, состоящий из &quot;ab cd ef&quot; и есть другой пустой массив, нужно &quot;cd&quot; скопировать в пустой массив...

Поиск подстроки в строке - C (СИ)
помогите пожалуйста написать без string

Поиск подстроки в строке - C (СИ)
Здравствуйте! Необходимо выполнить следующее задание. В заданной строке найти наибольшую подстроку, начинающуюся с символа «а» и...

Поиск подстроки в строке - C (СИ)
есть код, только я не очень понимаю как он работает P.S. считает сколько раз входит подстрока в строку. char *ptr = line; //...

Поиск подстроки в строке - C (СИ)
Программу я написал, но она не хочет работать, не могу отладить... #include &lt;stdio.h&gt; #include &lt;string.h&gt; #define MAX 1023 ...

3
rao
853 / 406 / 119
Регистрация: 02.04.2014
Сообщений: 1,171
08.02.2015, 10:02 #2
Если маски могут быть сложные (с множеством звездочек), то вручную это сделать будет тяжело. В с++ можно было бы воспользоваться регулярными выражениями, а в стандартном си их нет. Такой вопрос уже задавался.

И почему нельзя работать со строкой как с массивом? Символьный массив - встроенный тип данных, работать с ним можно всегда. А функции из <string.h> - подключаемые.
0
trustguy
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 16
08.02.2015, 12:15  [ТС] #3
Необходимо написать два варианта решения задачи: первый - работать со строкой, как с массивом, без использования подпрограмм из <string.h>, второй, соответственно, использовать только их и не рассматривать строку, как массив.
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
08.02.2015, 13:32 #4
Цитата Сообщение от trustguy Посмотреть сообщение
что делать с этими звездочками
glob (programming)
Wildcard string compare (globbing)
Glob
0
08.02.2015, 13:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2015, 13:32
Привет! Вот еще темы с ответами:

Как осуществить поиск подстроки в строке? - C (СИ)
Как осуществить поиск подстроки в строке на языке С ??

Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку - C (СИ)
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку Пример Исходная строка: aaaabbbaaa ...

В строке символов заменить все вхождения подстроки p на не более чем n символов подстроки q - C (СИ)
Составить функцию Zam(s,p,q,n), которая в строке символов s заменяет все вхождения подстроки p на не более чем n символов подстроки q....

Найти позицию подстроки в строке - C (СИ)
привет всем, с вами снова изобретатель велосипедов :) на сей раз я решил изобрести поиск подстроки в строке, немного не выходит,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru