Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.04.2010
Сообщений: 14
1

поиск по тексту

14.04.2010, 10:21. Просмотров 564. Ответов 3
Метки нет (Все метки)

Привет всем. У меня такая задач. Нужно было разобрать файл, обработать его(вытащить из него нужное) и записать в др файл(с этими задачами я справился.). файл который я сконфигурировал выглядит след образом

id="тут имя точки"
>тут адрес этой точки<
>тут адрес этой точки<
>тут адрес этой точки<
>тут адрес этой точки<
id="тут имя точки"
и т.д.


Помогите пожалуйста хотябы идеями как можно сделать поиск по такому файлу. к примеру мне надо по адресу найди имя точки и наоборот если я знаю имя точки выдавало бы ее адреса.. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2010, 10:21
Ответы с готовыми решениями:

Поиск по тексту
помогите решить такое задание, подается массив текста, найти позицию первой даты, если нет то...

Поиск по тексту
Привет, помогите нубу, пожалуйста) Надо выполнить поиск по тексту но что бы он проходил по такому...

Поиск по тексту
Здраствуйте. Хотелось бы поинтересоваться, можно ли канибуть програмно организоать поиск отдельных...

Поиск по тексту
Привет всем Пишу парсер на c#. Сам новичок В общем, нужно выполнить поиск по исходному коду...

3
4849 / 3270 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
14.04.2010, 11:04 2
C
1
2
3
4
5
struct point {
    char name[100];
    char **addresses;
    long quantity;
};
это струтктура для точки, которая включает имя, массив адресов (строк), количество адресов
массив адресов выделяется с помощью malloc() и подключается к структуре
копирование адресов через strcpy(), например
0
0 / 0 / 0
Регистрация: 14.04.2010
Сообщений: 14
15.04.2010, 00:58  [ТС] 3
Спасибо. тут потребовались большие данные и я сделал так структуру

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
               struct adr
    {
        int hub;
        int prior;
        char adrr[30];
    };
 
    struct KKS
    {
        char name[30];
        int num;
        adr dev[4];
    };
вот файл по которому надо делать данный поиск выглядит так

id="имя точки"
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
id=" "
и т.д.

вот. как дальше пока еще не понял=(

Добавлено через 4 часа 16 минут
Ребят. хелп.. вообще не могу въехать как сделать=( хоть какую нить идейку подкинте

Добавлено через 9 часов 4 минуты
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>                             //*************************************************************//
#include <string.h>                             //*                       Разбор файла                        *//
#include <stdio.h>                              //*                                                           *//
#define MAXLIN 200                              //*************************************************************//
using namespace std;
 
 
 
 
//struct KKS_NAME_ADR_STRUCT
//{
//      int hub;
//      int prior;
//      char nameADR[30];
//      char nameKKS[30];
//};
 
//KKS_NAME_ADR_STRUCT   KKS_NameAdr[ 2000 ];
int main ()
{
    FILE *in, *out;                           //объявление файлов
    char *sname;                              //строка с ККС
    char *sname1;                             //строка с адресом
    char string [MAXLIN];                     //длина строки
    char str[] = "<device dev_";              //начало строки с ККС
    char str1[] = "  <route ";                //начало строки с адресом
    int numRec=0;                             //считаем кол-во строк с ККС
    int numRec1=0;                            //считаем кол-во строк с адресом
    int num;                                  //общее кол-во строк
    in = fopen("dev_knpp.txt", "r");          //открываем файл in для чтения
    out = fopen("test.txt", "w");             //открываем файл out для записи
    while(fgets(string, MAXLIN, in) != NULL)  //читаем построково весь файл in
    {
        sname = strstr(string, str);          //получаем строку с ККС
        sname1 = strstr(string, str1);        //получаем строку с адресом
        if(sname != NULL)                     //если строка с ККС не нулевая,то вырезаем из строки имя
            {   
            int beg = strlen(str);            //начала имени ККС
            int end = strlen(sname) - beg;    //Конец имени ККС
            int i;                            
            char res[MAXLIN];                 //объявление результата
            for(i=0; i<(end-beg); i++)
            {
                res[i] = sname[beg+i];
            }
            res[i] = '\n';
            res[i+1] = 0;
            fputs(res, out);                  //записываем в файл out имя ККС
            cout << res;                      //выводим имя ККС
            numRec++;                         //кол-во строк
            }
        if(sname1 != NULL)                    //если строка с адресом не нулевая, то вырезаем из строки адрес
            {
            int beg1 = strlen(str1);          
            int end1 = strlen(sname1) - beg1;
            int k;
            char res1[MAXLIN];
            for(k=0; k<(end1-beg1+1); k++)
            {
                res1[k] = sname1[beg1+k];
            }
            res1[k] = '\n';
            res1[k+1] = 0;
            fputs(res1, out);                  //записываем в файл out адрес
            cout << res1;                      //выводим адрес
            numRec1++;                         //кол-во строк
            }
    }
    cout << "Recotds Number = " << numRec << "\n"; //вывод общего кол-ва строк ККС
    cout << "Recotds Number = " << numRec1 << "\n";//вывод общего кол-ва строк адресов
    fclose(in);                                //закрываем файл in
    fclose(out);                               //закрываем файл out
}

Вот что наваял.... но прога просто разбирает файл по строками и выделяет из строк нужное мне и записывает в файл.. можно ли теперь создать структуру?
0
4849 / 3270 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
15.04.2010, 05:04 4
Код
id="имя точки1"
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
id="имя точки2"
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
hub=" " prior=" ">адрес
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
int GetKKS(struct KKS *p, FILE *infile)
{
    int retval;
    struct KKS kks;
    int i;
 
    
    /* p->num устанавливается где-то выше */
 
 
    retval = GetKKSId(kks.name, infile);
    
    if (retval != 0)
        return -1;
 
 
    for (i = 0; i < 4; i++) {
 
        retval = GetKKSAddr(&kks.dev[i], infile);
    
        if (retval != 0)
            return -2;
 
    }
 
 
    *p = kks;
 
 
    return 0;
}
C
1
2
3
4
5
6
7
8
9
int GetKKSId(char *p, FILE *infile)
{
    ;
}
 
int GetKKSAddr(struct adr *p, FILE *infile)
{
    ;
}
Добавлено через 5 минут
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
int GetKKSId(char *p, FILE *infile)
{
 
    strcpy(p, "one");
 
    return 0;
}
 
int GetKKSAddr(struct adr *p, FILE *infile)
{
    struct adr a;
 
 
    a.hub = 1;
 
    a.prior = 1;
 
    strcpy(a.addr, "addr1");
 
 
    *p = a;
 
 
    return 0;
}
псевдоданные
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2010, 05:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Поиск по тексту
Задача поискать в большом тексте определённое слова или отравок текста. практически во всех...

Поиск по тексту
Вопрос как организовать поиск по тексту. предположим текст в документе разделён на строки Я...

Поиск в DataGrid по тексту
Здравствуйте. Подскажите пожалуйста, как можно реализовать поиск в DataGrid через TextBox? Все мои...

Поиск слов по тексту
Как реализовать поиск ко ключевым словам по сайту. Например, чтоб мониторить новости, к примеру на...


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

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

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