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

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

Восстановить пароль Регистрация
 
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
18.05.2014, 15:27     Поиск строки в файле #1
Помогите сделать рабочий поиск строки в файле, заранее спасибо)

C++
1
2
3
4
5
6
7
8
struct book
{
    char name[30];
    char author[40];
    int year;
    int code;
    char genre[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
27
28
29
void findbook()
{
    ifstream two("library.book",ios::binary);
    if(!two)
    {
        cout<< "Error."<<endl;
        system("PAUSE");
    }
    else
    {
        two.seekg(0,ios::end);//указатель в конец
        int size=two.tellg();//tellg используем, чтобы получить позицию указателя, после того, как переставили его в конец.
        size=size/sizeof(book);
        book*one=new book[size];
        two.seekg(0,ios::beg);
        two.read((char *)one, sizeof(book)*size);
        char find[30];
        cout<<"\n[SEARCH]\nEnter book: ";
        cin>>find;
        for(int i=0;i<=size;i++)
        {
            if(strstr(one[i].name, find))
                cout<<"Search progress: "<<one[i].name<<size<<"[FOUND]"<<endl;
            else cout<<"Book with name "<<i+1< "[NOT FOUND]!"<<endl;
            system("PAUSE");
        }
        two.close();
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4315 / 3736 / 1260
Регистрация: 14.04.2014
Сообщений: 14,642
18.05.2014, 15:46     Поиск строки в файле #2
Вместо 19-й строки
C++
1
cin.getline(find, 30);
Цикл:
C++
1
2
3
4
5
6
7
8
9
10
bool fnd = false; 
for(int i=0;i<size;i++)
        {
            if(strstr(one[i].name, find) != null)
            {
                cout << "Found in " << i << ": "<< one[i].name << endl;
                fnd = true;
            }
        }
if(!fnd) cout<<"Book with name "<< find << " [NOT FOUND]!"<<endl;
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
18.05.2014, 15:57  [ТС]     Поиск строки в файле #3
nmcf,

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
void findbook()
{
    ifstream two("library.book",ios::binary);
    if(!two)
    {
        cout<< "Error."<<endl;
        system("PAUSE");
    }
    else
    {
        two.seekg(0,ios::end);//указатель в конец
        int size=two.tellg();//tellg используем, чтобы получить позицию указателя, после того, как переставили его в конец.
        size=size/sizeof(book);
        book*one=new book[size];
        two.seekg(0,ios::beg);
        two.read((char *)one, sizeof(book)*size);
        char find[30];
        cout<<"\n[SEARCH]\nEnter book: ";
        cin.getline(find, 30);
        bool fnd = false; 
for(int i=0;i<size;i++)
        {
            if(strstr(one[i].name, find) != 0)
            {
                cout << "Found in " << i << ": "<< one[i].name << endl;
                fnd = true;
            }
        }
if(!fnd) cout<<"Book with name "<< find << " [NOT FOUND]!"<<endl;
            system("PAUSE");
        }
        two.close();
}
Почему то не находит, пишет found in 0
nmcf
4315 / 3736 / 1260
Регистрация: 14.04.2014
Сообщений: 14,642
18.05.2014, 16:01     Поиск строки в файле #4
Значит находит что-то в нулевой строке. Отладчиком посмотри это место, что в one считывается и что находится в find.
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
18.05.2014, 16:17  [ТС]     Поиск строки в файле #5
nmcf, он только первую книгу не видит, остальные легко находит
nmcf
4315 / 3736 / 1260
Регистрация: 14.04.2014
Сообщений: 14,642
18.05.2014, 16:20     Поиск строки в файле #6
Смотри отладчиком. Так не понятно.
Yandex
Объявления
18.05.2014, 16:20     Поиск строки в файле
Ответ Создать тему
Опции темы

Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru