![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Vit_as |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Помогите плиз решить два вопроса.
1). Аллокирование памяти для структуры. Есть файл куда заносятся данные. struct Baze { char artist[30]; char kompoz[30]; int year; char album[30]; }; 2). Удаление одного элемента структуры из файла. |
|||
|
||||
achmed |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 12.4.2004 Репутация: нет Всего: нет |
не очень понятен вопрос, опиши задачу поподробней
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
1) проблема с динамическим выделением памяти под объект ?
или с записью объекта в файл ? 2) если нужно вырезать кусок из файла, то придётся создавать новый файл, куда записывать фрагменты "до" и "после" вырезанного куска оригинального файла. З.Ы. Модератор: Пожалуйста, один топик - один вопрос. -------------------- ![]() |
|||
|
||||
Vit_as |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Задача состоит в том что надо создать базу данных на С++ в консольном приложении, с использованием структуры. Запись в файл, просмотр базы, сортировку и поиск я уже сделал. Но память под массив ограничена (надо сделать выделение памяти). И плюс еще не знаю как делать удаление одного элемента структуры из файла.
|
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Да, задал ты себе задачку...
Насколько я понимаю, ты хочешь создать что то типа Обьект-ориентированной ба3ы данных. Посмотри тут для того , что бы представить как такой прототип работает, . FastDB (Очень радует, что создалэто наш соотечественник.) Работа происходит примерно так:
То есть грубо говоря: Существует щапка файла где хранятся позиции первых структур в файле. Каждая структура содержит в себе данные плус позицию следующей структуры. Таким образом сохраняются не только сами данные, но и вспомогательные структуры индехаций (например B-Tree). Новый елемент добавляется в конец файла/массива (если массив, то в памяти он конечно должен быть гораздо больше самой БД). Даже у этого человека в докторской работе обьект (структура) не удаляется физически (пришлось бы переписывать вес маппанный массив). На неё просто больше ни чего не указывает. Время от времени БД переписывается заново и тогда естесственно "мёртвые" обьекты не перенимаются. Если тебе не принципиально создаватьэту беду самому, я бы (как уже много раз) предложилSQLite. С небольшой модификацией туда можно складывать и структуры. |
|||
|
||||
maxim1000 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
ну не совсем ![]() если размер структуры постоянный (а если я не ошибаюсь, здесь именно такой случай), можно поступить так: 1. читаем последнюю запись в файле 2. записываем ее на место той, которую нужно удалить 3. теперь, когда у нас появилось две копии последней записи, обрезаем ту, которая в конце файла (тут даже где-то был топик, как это делать)
если здесь имеется в виду массив всех записей, то читать его весь в оперативную память, как мне кажется, не совсем хорошая идея... -------------------- qqq |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |