Показать сообщение отдельно
  #58  
Старый 22.04.2011, 23:30
Аватар для SpellCaster
Hi-Tech шаман и IT-мистик
 
Регистрация: 24.04.2006
Сообщений: 6,911
Репутация: 2035 [+/-]
Цитата:
Сообщение от Gligarr Посмотреть сообщение
Вообще, как можно организовать удаление определенной структуры?
Ууу, брат. Удаление из/добавление в середину в файлах делается только с копированием остального хвоста файла. То есть в случае удаления тебе надо делать так:
1) Прочитать структуру t1
2) Проверить условия, спросить
3) Если удовлетворяет условию, цикл:
* Прочитать следующую структуру t2
* Переместиться на 2*SizeOf(luggage) назад (потому что к этому моменту указатель в файле будет у начала второй структуры после удаляемой t1 - назовем ее t3)
* Записать в текущее место t2
* Переместиться на SizeOf(luggage) вперед
* Повторить цикл
5) В конце обрезать файл на SizeOf(luggage) байт

То есть, проще говоря, по кусочкам "подтащить" структуры, заполнив свободную ячейку в файле

Что же касается твоего кода "Удаление структур с t1.weight<10", то ты там вообще что-то непонятное творишь. В случае утвердительного ответа перезаписываешь структуру, которую надо удалять, причем на ту же позицию, где она и есть в файле, а потом еще и зачем-то закрываешь файл
__________________
Лучше гор могут быть только горы,
Вниз с которых ещё не съезжал.
Ответить с цитированием