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

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

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

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

18.05.2014, 15:27. Просмотров 394. Ответов 5
Метки нет (Все метки)

Помогите сделать рабочий поиск строки в файле, заранее спасибо)

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();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 15:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск строки в файле (C++):

Поиск строки в файле - C++
Друзья. прошу помочь советом ибо мозг сломал совсем итак, имеется файл с набором символов, например вот такого вида- 'bla bla bla...

Поиск строки в файле - C++
Добрый вечер, Посоветуйте, как можно реализовать поиск строки в одном файле &quot;log.txt&quot; и если нету этой строки то записать ее в файлы...

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

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

Поиск строки с необходимым словом в файле - C++
Здравствуйте! Есть txt файл и в нём n-ое количество строк, необходимо найти строку в которой есть слово &quot;Программа&quot;. План действий: ...

Поиск самой длинной строки в файле - C++
дана такая задача: Дан текстовый файл f. Вывести самую длинную строку файла. Если в файле имеется несколько строк с наибольшей длиной, то...

5
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
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;
0
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
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.05.2014, 16:01 #4
Значит находит что-то в нулевой строке. Отладчиком посмотри это место, что в one считывается и что находится в find.
0
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
18.05.2014, 16:17  [ТС] #5
nmcf, он только первую книгу не видит, остальные легко находит
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.05.2014, 16:20 #6
Смотри отладчиком. Так не понятно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 16:20
Привет! Вот еще темы с ответами:

Поиск нужной строки во внешнем файле ( блокнот ) - C++
Уважаемые форумчане, подскажите пожалуйста как осуществить поиск строчки в текстовом файле (блокнот). Суть: Задается два параметра...

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

Поиск, сортировка и удаление строки в txt файле - C++
Помогите новичку с C++. Есть файл с данными вида: ФИО Дата рождения Образование и тд... Нужно организовать поиск, чтобы в...

Оператор преобразования типа и его эквивалентные замены, поиск строки в текстовом файле , содержащей заданный - C++
Господа, был бы очень признателен если бы кто то помог ответить на вапросы http://cs616225.vk.me/v616225102/122f8/5kAaFEGoDn0.jpg


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
18.05.2014, 16:20
Ответ Создать тему
Опции темы

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