Как удалить запись из двоичного файла?
Подскажите пожалуйста, как можно из бинарного файла, в котором находяться записи вида struct {int a; char b[10]}(например) удалить одну из записей. При этом, т.к. размер файла большой, то варианты с полным считыванием файла в строку и последующим ее редактированием не подходят...
Цитата:
Originally posted by alexx
Подскажите пожалуйста, как можно из бинарного файла, в котором находяться записи вида struct {int a; char b[10]}(например) удалить одну из записей. При этом, т.к. размер файла большой, то варианты с полным считыванием файла в строку и последующим ее редактированием не подходят...
Подскажите пожалуйста, как можно из бинарного файла, в котором находяться записи вида struct {int a; char b[10]}(например) удалить одну из записей. При этом, т.к. размер файла большой, то варианты с полным считыванием файла в строку и последующим ее редактированием не подходят...
Ну, батенька, тогда уже никак. Придется, скорее всего "удалять" запись на логическом уровне, помечая ее как удаленную, но не удаляя из файла физически. Например, так делает DBF.
Цитата:
Originally posted by alexx
Подскажите пожалуйста, как можно из бинарного файла, в котором находяться записи вида struct {int a; char b[10]}(например) удалить одну из записей. При этом, т.к. размер файла большой, то варианты с полным считыванием файла в строку и последующим ее редактированием не подходят...
Подскажите пожалуйста, как можно из бинарного файла, в котором находяться записи вида struct {int a; char b[10]}(например) удалить одну из записей. При этом, т.к. размер файла большой, то варианты с полным считыванием файла в строку и последующим ее редактированием не подходят...
А причем здесь строка? Создай временный файл и считай туда все данные которые не должны быть удалены - а потом замени исходный файл и удали временный. Все. Используя файловые потоки - строк 10 кода. Готовый код я выкладывал на форум, в подобной теме, используй поиск.