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

С++ для начинающих

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

Поиск строк в файле по маске - C++

09.12.2013, 18:57. Просмотров 1341. Ответов 2
Метки нет (Все метки)

Программа осуществляет в файле поиск строк, отвечающих заданной маске. В маску могут входить символ «?» (любой печатный символ или пусто). Все остальные символы интерпретируются «как есть». Пример: маске http://*.com отвечают любые URL-адреса в зоне .com, маске а??а отвечают слова «алла», «авиа», «ага» и т.д.

Я не понимаю,в чем здесь ошибка.Люди,помогите?
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
27
28
29
30
31
32
33
34
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream.h>
 
void main(){
clrscr();
char str_1[80];
char mask[80];
printf("ўўҐ¤ЁвҐ ¬*бЄг:  ");
scanf("%s",&mask[0]);
FILE *f1;
f1=fopen("filetxt.txt","r");
if(f1==NULL){
puts("error");
return;}
while(1)
{
 
fscanf(f1,"%s",&str_1[0]); //fgets
char str_2[300];
while (strlen(mask)==strlen(str_1))
{
for (int i=0;i<strlen(str_1) && i<strlen(mask);i++)
{
if( str_1[i]!=mask[i] && mask[i]!='?' || mask[i]!=' ') continue;
else {str_2[strlen(str_2)]=str_1[i]; str_2[strlen(str_2)+1]='\0';}
}
 
if (feof(f1)) break;}
printf("  %s",str_2);
getch();
fclose(f1);
}}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 18:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск строк в файле по маске (C++):

Поиск повторяющихся строк в файле - C++
Нужна рекомендация! Есть сгенерированные цепочки (строки) которые записаны и в файл, и естественно выводятся с него. Нужно сделать...

Поиск определенных строк в текстовом файле - C++
Здравствуйте. Есть файл &quot;file.txt&quot; в котором есть строки: Bread: 3 Milk: 1 Chicken: 4 Juice: 3 Potatoes: 2 Tomatoes: 1 ...

Поиск строк в файле методами бинарного поиска и перебора - C++
Массив длины 15 заполнен строками, упорядоченными лексикографически 1 без повторов: список зарегистрированных посетителей ...

Поиск файла по маске - C++
Добрый вечер. Ребята, подскажите как реализовать в этой строке поиск файлов с двумя расширениями. С одним расширением все ок, два не...

Поиск файла по маске - C++
Вторичный поток ищет файлы в заданном каталоге по маске. Главный поток выводит файлы в порядке убывания размера файлов. Использовать...

Как организовать поиск файла по маске - C++
помогите с организацией поиска файла по маске

2
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
09.12.2013, 20:27 #2
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
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
bool prmatch(char* str, char* mask)
{
    int i = 0;
    char first[256] = "\0";
    while (*mask != '?') 
        first[i++] = *mask++;
 
    int n = 0;
    char last[256] = "\0";
    while (*mask != '\0')
        last[n++] = *mask++;
 
    bool nb = false;
    for (int t = 0; t < i && !nb; t++)
        nb = (first[t] != str[t]) ? 1 : 0;
 
    bool ne = false; int s = strlen(last)-1;
    for (int r = strlen(str)-1; last[s] != '?' && !ne; r--)
        ne = (str[r] != last[s--]) ? 1 : 0;
 
    return (nb == false) && (ne == false);
}
 
int main(int argc, char* argv[])
{
    char str[256] = "newarmaturalux\0";
    char mask[256] = "newa??alux";
 
    printf("string = %s\nmask = %s\nresult = %d\n",prmatch(str,mask));
 
    _getch();
 
    return 0;
}
0
noomer
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 7
17.12.2013, 18:19  [ТС] #3
Цитата Сообщение от zitxbit Посмотреть сообщение
bool nb = false;
что значит false?

Добавлено через 34 минуты
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
27
28
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream.h>
 
void main(){
clrscr();
char str_1[80],str_2[300];
char mask[80];int i;
printf("ўўҐ¤ЁвҐ ¬*бЄг:  ");
scanf("%s",&mask[0]);
FILE *f1;
f1=fopen("filetxt.txt","r");
if(f1==NULL){
puts("error");
return;}
while(1)
{ int r=1;
fgets(str_1,255,f1);
if (strlen(mask)!=strlen(str_1)){ r=0;}
else for (i=0;i<strlen(mask);i++) {
 if(str_1[i]!=mask[i] && mask[i]!='?') {r=0; break;}
}
if (r) cout<<str_1;
if (feof(f1)) break;}
getch();
fclose(f1);
}
Вот что я получила,но все равно ничего не выводит
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 18:19
Привет! Вот еще темы с ответами:

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом текстом файле; Не могу понять почему не работает: ...

Программа для поиска соответствие строк, учитывая регистр, в текстовом файле с 10000+ строк - C++
Уважаемые форумчане, прошу у вас помощи я неделю в поисках. Мне нужна программа или код для поиска слов, очень похожую на расширение Pearls...

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле - C++
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим папкам пройтись и из каждой папки в этом файле достать...

Массив строк в файле - C++
Есть файл с вот таким содержанием: 11111 11111 11111 22222 22222 22222 33333 33333 33333 Все строки фиксированной одинаковой...


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

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

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