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

Редактирование бинарного файла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.79
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
30.03.2012, 04:46     Редактирование бинарного файла #1
возможно ли написать такую функцию которая будет редактировать бинарный файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 04:46     Редактирование бинарного файла
Посмотрите здесь:

Чтение бинарного файла C++
чтение бинарного файла C++
Редактирование бинарного файла C++
C++ Обработка бинарного файла
C++ Сортировка\редактирование\удаление бинарного файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,591
Записей в блоге: 17
30.03.2012, 05:25     Редактирование бинарного файла #2
Можно, вопрос в том что записано в файле?
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
30.03.2012, 20:54  [ТС]     Редактирование бинарного файла #3
Цитата Сообщение от Avazart Посмотреть сообщение
Можно, вопрос в том что записано в файле?
пример одного из файлов
Первый файл содержит информацию о товарах:
• Идентификатор (уникальный номер) товара;
• Название;
• Цена;
• Количество в наличии.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
30.03.2012, 21:02     Редактирование бинарного файла #4
типизированный файл?
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,591
Записей в блоге: 17
30.03.2012, 21:04     Редактирование бинарного файла #5
Ну составить структуру "товар" и записывать в бинарном виде в файл для перехода по товарам можно использовать seekg(), seekp()
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
30.03.2012, 21:08     Редактирование бинарного файла #6
Цитата Сообщение от crewww Посмотреть сообщение
возможно ли написать такую функцию которая будет редактировать бинарный файл?
Да.

Для редактирования нужно открыть файл так:
C++
1
2
3
ofstream fout("c:\\f.txt", ios::in | ios::out);           //Open
fout.seekp(sizeof(StuctureName) * numOfRecord);         //Поставить указатель на место где нужно редактировать
fout.write(reinterpret_cast<const char *>(&structureObject), sizeof(structureName));        //Записать
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,591
Записей в блоге: 17
30.03.2012, 21:26     Редактирование бинарного файла #7
Желательно fstream fout("c:\\f.txt", ios::in | ios::out | ios::binary);
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
31.03.2012, 03:45  [ТС]     Редактирование бинарного файла #8
Цитата Сообщение от Nekto Посмотреть сообщение
типизированный файл?
да именно типизированный

Добавлено через 3 минуты
Цитата Сообщение от dimcoder Посмотреть сообщение
Да.

Для редактирования нужно открыть файл так:
C++
1
2
3
ofstream fout("c:\\f.txt", ios::in | ios::out);           //Open
fout.seekp(sizeof(StuctureName) * numOfRecord);         //Поставить указатель на место где нужно редактировать
fout.write(reinterpret_cast<const char *>(&structureObject), sizeof(structureName));        //Записать
как будет определяться numOfRecord?

Добавлено через 23 минуты
чтобы оформить функцию мне нужно на входе получать файл
то есть заголовок функции такой будет?
C++
1
void correct (ifstream &f)
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,591
Записей в блоге: 17
31.03.2012, 04:53     Редактирование бинарного файла #9
Думаю так
C++
1
2
3
4
5
6
7
8
9
10
11
bool correct (std::string filename,StuctureName structureObject,int numOfRecord)
{
fstream fout(filename.c_str(), ios::out|ios::binary);   
if(fout) 
 {      
 fout.seekp(sizeof(StuctureName) * numOfRecord);        
 fout.write(reinterpret_cast<const char *>(&structureObject), sizeof(structureName));  
 return  true;    
 }
return false;
}
numOfRecord- номер записи
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
31.03.2012, 22:04  [ТС]     Редактирование бинарного файла #10
как будет определяться numOfRecord?
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 22:23     Редактирование бинарного файла #11
Цитата Сообщение от crewww Посмотреть сообщение
как будет определяться numOfRecord?
Ну ты ж редактируешь. Какой надо, такой и ставишь.
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
31.03.2012, 22:49  [ТС]     Редактирование бинарного файла #12
Цитата Сообщение от Nekto Посмотреть сообщение
Ну ты ж редактируешь. Какой надо, такой и ставишь.
я имел ввиду как вообще нумерация идет
скажем вот файле записана 1 структура там есть Идентификатор (уникальный номер) товара; Название; Цена; Количество в наличии.
она имеет номер 0? затем следующая уже имеет номер 1? или все таки с 1 идет нумерация?
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 22:57     Редактирование бинарного файла #13
Цитата Сообщение от crewww Посмотреть сообщение
я имел ввиду как вообще нумерация идет
скажем вот файле записана 1 структура там есть Идентификатор (уникальный номер) товара; Название; Цена; Количество в наличии.
она имеет номер 0? затем следующая уже имеет номер 1? или все таки с 1 идет нумерация?
с 0 начинается.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,591
Записей в блоге: 17
31.03.2012, 23:38     Редактирование бинарного файла #14
И если меняешь, то менять надо всю структуру целиком со всеми полями.
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
01.04.2012, 11:30  [ТС]     Редактирование бинарного файла #15
Цитата Сообщение от Avazart Посмотреть сообщение
И если меняешь, то менять надо всю структуру целиком со всеми полями.
можете подробнее объяснить
и еще вопрос возник почему функция редактирования булевская а не void?
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
01.04.2012, 11:39     Редактирование бинарного файла #16
Цитата Сообщение от crewww Посмотреть сообщение
можете подробнее объяснить
и еще вопрос возник почему функция редактирования булевская а не void?
В случае неудачи вернёт false. Если всё ок, вернёт true.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 13:45     Редактирование бинарного файла
Еще ссылки по теме:

Чтение бинарного файла C++
C++ Редактирование записи бинарного файла
C++ Запись бинарного файла

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,591
Записей в блоге: 17
01.04.2012, 13:45     Редактирование бинарного файла #17
C++
1
if( ! correct (filename,structureObject,numOfRecord) ) cout<<"Ошибка открытия файла "<<filename<<endl;
Добавлено через 4 минуты
Есть еще нюанс с тем что надо заранее знать количество объектов структур записанных в файле что бы случайно numOfRecord не превысил её при редактировании.
Yandex
Объявления
01.04.2012, 13:45     Редактирование бинарного файла
Ответ Создать тему
Опции темы

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