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

Поиск и замена поля структуры в файле - C++

Восстановить пароль Регистрация
 
butoxors1
0 / 0 / 1
Регистрация: 21.05.2013
Сообщений: 26
14.06.2014, 19:20     Поиск и замена поля структуры в файле #1
Всем привет, возникла проблема с заменой определённой строки в файле. Задание состоит в том, что бы найти нужное поле в файле структуры и заменить его на новое, код вроде работает, но создаёт копии в конце файла.
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
fstream f1(filename,ios::in);
            fstream f2("new",ios::out|ios::trunc);
            cout<<"Введите назначение склада для замены : ";
            cin>>poisk;
            fstream f2("new",ios::out|ios::app);
            while(!f1.eof()){
 
                f1.read((char*)&sclad,sizeof(SCLAD));
 
                if(strcmp(sclad.sclad,poisk)==0){
                    cout<<"Найдено совпадение!"<<endl;
                    cout<<sclad.sclad<<"\t\t"<<sclad.massa<<'\t'<<sclad.norma<<endl;
                    cout<<"_____________________________________________________________"<<endl;
                    cout<<"Заменить данные? 0-нет, 1-да : ";
                    cin>>l;
                    if(l==1){
                        cout<<"Введите данные для замены : "<<endl;
                        cout << "Введите Назначение склада: ";
                        cin >> sclad.sclad;
                        cout << "Введите массу продукции: ";
                        cin >> sclad.massa;
                        cout << "Введите норму складских запасов: ";
                        cin >> sclad.norma;
                        cout<<"1 действие"<<endl;
                        f2.write((char*)&sclad,sizeof(SCLAD));
                    }
                    else
                        f2.write((char*)&sclad,sizeof(SCLAD));
                }
                else
                        f2.write((char*)&sclad,sizeof(SCLAD));
            }f1.close();f2.close();
Жду ваших предложений...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2014, 19:20     Поиск и замена поля структуры в файле
Посмотрите здесь:

Закрытые поля структуры. C++
Поиск и замена символов в файле C++
C++ Поиск и замена текста в файле
C++ Поиск, считывание и замена символов в файле [C++]
Ошибка. Поиск и замена слова в текстовом файле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
14.06.2014, 19:30     Поиск и замена поля структуры в файле #2
Цитата Сообщение от butoxors1 Посмотреть сообщение
ios::app
данные будут записывааться строго в конце файла

ну можно с помощью seekg/seekp параллельно идти по файлу и считывать, в случаю если считанная структура искомая - то переписываем её

но я всегда такие вещи делал считыванием файла целиком и обработкой данных в каком-либо контейнере - сортировка и т.п. , но это ресурсозатратнее. Если необходимо только удлаить запись то лучше сделать как я написал выше
butoxors1
0 / 0 / 1
Регистрация: 21.05.2013
Сообщений: 26
14.06.2014, 19:57  [ТС]     Поиск и замена поля структуры в файле #3
ну а если делать через ваш способ, то как примерно будет выглядеть код?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
14.06.2014, 23:09     Поиск и замена поля структуры в файле #4
Цитата Сообщение от butoxors1 Посмотреть сообщение
ну а если делать через ваш способ, то как примерно будет выглядеть код?
создаём контейнер(да или обычный массив) структур с возможностью произвольного доступа, записываем туда файл, ищем в файле структуру, меняем соотв ячейку на нашу новую, перезаписывает в файл, всё
Yandex
Объявления
14.06.2014, 23:09     Поиск и замена поля структуры в файле
Ответ Создать тему
Опции темы

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