![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
Как удалить структуру из файла (без использования еще одного файла).
Короче:
Ненадо кода писать, просто дайте какунить наводку, или функцию, которая ета сделает... |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 2 Всего: 6 |
Ну удобнее всего переписать в другой файл конечно без этой структуры.
Если оперативка позволяет, можно считать весь файл в массив структур, а потом в этот же файл и записать, опять же без одной структуры. Если так не хочешь, есть вариант, предложенный Дейтелом: Вобщем сразу создается файл примером на 100 структур. И записывается 100 ПУСТЫХ структур. Если это число, значит 0, если строка, то пустая. Ну и при считывании это надо учитывать: игнорировать такие пустые структуры. Тогда удобно работать с любой частью файла. Если надо добавить 20-ую структуру, которой "типа" не было, переходим на нее и записываем нужную инфу. Если нужно удалить, записываем поверх удаляемой пустую. Если нужно добавить новую с номером 120, добавляем еще 19 пустых структур и 120-ую с инфой. Ну вобщем так. Если место на винте позволяет, и мало таких пропусков, то очень удобно. Все-таки, если файлы по 50 метров и нужно удалить одну структуру, то вариант с переписыванием файла в новый и переименованием в новый не канает -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
Елки, а помоему как-то подругому можно...
Например в паскале есть функция truncate - она все от файлового указателя до конца стирает.... А в С альтернативы нет-что ли??? |
|||
|
||||
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
аааааааааааааааа!!
Где ответы? - нету... Где советы? - тоже нету.... Где все хорошие прграммисты??? - ... Что никто не знает как удалить структуру??? |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 2 Всего: 6 |
Так что тебе даст truncate? Это если только последнюю структуру удалить нужно. А если любую?
Смотри выше -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
Как-ето что даст???? Сдвигать каждую i на i-1 а потом удалить последнюю... Короче: Файл: (в нем структуры) s1, s2, s3, s4, s5, s6,s7 Надо удалить s3: s1,s2, s3<-s4, s4<-s5, s5<-s6, s6<-s7, s7 Потом указатель на последнюю, и truncate... Файлов в 50 кг не будет так-что для данной задачи способ рациональный, наверно |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
HELPER, она и в С есть
int truncate (const char*filename, off_t length); -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
Спасибо
_hunter слепой я балбес... =)) Добавлено @ 14:24 хотя....чето библиотека у нее какая??, а то что-то function truncte must have a prototype... |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
упс... она самописная...
вот темы: http://forum.vingrad.ru/index.php?showtopic=38694 http://forum.vingrad.ru/index.php?showtopic=35612 -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
Да уж...
А если сделать надо в досе?? т.е. в BC, TC.... Уже 10 дней инфу ищу..... |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Если ты говоришь, что 50кг инфы не будет, то надо считывать все структуры из файла в массив структур, а затем записывать все эти структуры, за исключением ненужной обратно в файл.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| HELPER |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
Ну да, дельный совет...особенно, когда
_hunter уже все сказал и расписал и ссылки дал... =) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |