Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
1

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

30.03.2012, 04:46. Просмотров 4622. Ответов 16
Метки нет (Все метки)

возможно ли написать такую функцию которая будет редактировать бинарный файл?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 04:46
Ответы с готовыми решениями:

Редактирование бинарного файла
Суть программы - создаёт бинарный файл и записывает в него строки с количеством...

Редактирование записи бинарного файла
Здравствуйте. Подскажите пожалуйста, мне надо призвести редактирование записи в...

Сортировка\редактирование\удаление бинарного файла
Люди помогите пожалуйста... В бинарном файле у меня находятся сведения о...

Создание бинарного дерева из бинарного файла
struct Bin { string name; string city; int players; int score; };...

Создание бинарного дерево из бинарного файла
struct Bin { string name; string city; int players; int...

16
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
30.03.2012, 05:25 2
Можно, вопрос в том что записано в файле?
0
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
30.03.2012, 20:54  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
Можно, вопрос в том что записано в файле?
пример одного из файлов
Первый файл содержит информацию о товарах:
• Идентификатор (уникальный номер) товара;
• Название;
• Цена;
• Количество в наличии.
0
Nekto
342 / 287 / 37
Регистрация: 23.03.2012
Сообщений: 838
30.03.2012, 21:02 4
типизированный файл?
0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
30.03.2012, 21:04 5
Ну составить структуру "товар" и записывать в бинарном виде в файл для перехода по товарам можно использовать seekg(), seekp()
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,142
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));        //Записать
1
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
30.03.2012, 21:26 7
Желательно fstream fout("c:\\f.txt", ios::in | ios::out | ios::binary);
1
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)
0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 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- номер записи
1
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
31.03.2012, 22:04  [ТС] 10
как будет определяться numOfRecord?
0
Nekto
342 / 287 / 37
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 22:23 11
Цитата Сообщение от crewww Посмотреть сообщение
как будет определяться numOfRecord?
Ну ты ж редактируешь. Какой надо, такой и ставишь.
0
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
31.03.2012, 22:49  [ТС] 12
Цитата Сообщение от Nekto Посмотреть сообщение
Ну ты ж редактируешь. Какой надо, такой и ставишь.
я имел ввиду как вообще нумерация идет
скажем вот файле записана 1 структура там есть Идентификатор (уникальный номер) товара; Название; Цена; Количество в наличии.
она имеет номер 0? затем следующая уже имеет номер 1? или все таки с 1 идет нумерация?
0
Nekto
342 / 287 / 37
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 22:57 13
Цитата Сообщение от crewww Посмотреть сообщение
я имел ввиду как вообще нумерация идет
скажем вот файле записана 1 структура там есть Идентификатор (уникальный номер) товара; Название; Цена; Количество в наличии.
она имеет номер 0? затем следующая уже имеет номер 1? или все таки с 1 идет нумерация?
с 0 начинается.
0
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
31.03.2012, 23:38 14
И если меняешь, то менять надо всю структуру целиком со всеми полями.
0
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
01.04.2012, 11:30  [ТС] 15
Цитата Сообщение от Avazart Посмотреть сообщение
И если меняешь, то менять надо всю структуру целиком со всеми полями.
можете подробнее объяснить
и еще вопрос возник почему функция редактирования булевская а не void?
0
Nekto
342 / 287 / 37
Регистрация: 23.03.2012
Сообщений: 838
01.04.2012, 11:39 16
Цитата Сообщение от crewww Посмотреть сообщение
можете подробнее объяснить
и еще вопрос возник почему функция редактирования булевская а не void?
В случае неудачи вернёт false. Если всё ок, вернёт true.
1
Avazart
Эксперт С++
7722 / 5631 / 549
Регистрация: 10.12.2010
Сообщений: 25,397
Записей в блоге: 17
01.04.2012, 13:45 17
C++
1
if( ! correct (filename,structureObject,numOfRecord) ) cout<<"Ошибка открытия файла "<<filename<<endl;
Добавлено через 4 минуты
Есть еще нюанс с тем что надо заранее знать количество объектов структур записанных в файле что бы случайно numOfRecord не превысил её при редактировании.
1
01.04.2012, 13:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 13:45

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется
Формат файла состоит из 3 структур и одной переменной. Подробное описание...

Преобразование бинарного файла
Добрый день. Имеется файл, представляющий из себя сплошной текст из...

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


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

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

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