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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.79
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
#1

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

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

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

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

Редактирование записи бинарного файла - C++
Здравствуйте. Подскажите пожалуйста, мне надо призвести редактирование записи в файле, данные в файл заношу через структуру: struct TZap{...

Сортировка\редактирование\удаление бинарного файла - C++
Люди помогите пожалуйста... В бинарном файле у меня находятся сведения о нуждающихся в пособии. Имеются функции создания\откртия файла,...

Создание бинарного дерево из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*& Tree) { ...

Создание бинарного дерева из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*& Tree) { Bin q;

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

16
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,033
Записей в блоге: 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 / 10
Регистрация: 23.03.2012
Сообщений: 838
30.03.2012, 21:02 #4
типизированный файл?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,033
Записей в блоге: 17
30.03.2012, 21:04 #5
Ну составить структуру "товар" и записывать в бинарном виде в файл для перехода по товарам можно использовать seekg(), seekp()
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
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
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,033
Записей в блоге: 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
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,033
Записей в блоге: 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 / 10
Регистрация: 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 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 22:57 #13
Цитата Сообщение от crewww Посмотреть сообщение
я имел ввиду как вообще нумерация идет
скажем вот файле записана 1 структура там есть Идентификатор (уникальный номер) товара; Название; Цена; Количество в наличии.
она имеет номер 0? затем следующая уже имеет номер 1? или все таки с 1 идет нумерация?
с 0 начинается.
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,033
Записей в блоге: 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
01.04.2012, 11:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 11:30
Привет! Вот еще темы с ответами:

Чтение из бинарного файла - C++
Ну собственно,у меня есть некий двоичный файл,в него записана моя информация в двоичном виде,требуется считать эту информацию и вывести на...

Удаление бинарного файла - C++
Доброго времени суток! Не могу удалить файл &quot;prile.dat&quot;. Смысл функции &quot;find_and_change&quot; в том, чтобы скопировать часть содержимого из...

Чтение из бинарного файла - C++
Создала Базу данных. запись в файл происходит, а чтение из файла не получается. исправьте, пожалуйста, или подскажите как? #include...

Чтение из бинарного файла - C++
Добрый вечер.Возникла проблема при чтении имени объекта из бинарного файла,запись в файл идет по структуре |char|int|double|float|'/0'|...


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

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

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