Форум программистов, компьютерный форум CyberForum.ru

Модификация записи в файле структур - C++

Восстановить пароль Регистрация
 
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
10.04.2011, 22:21     Модификация записи в файле структур #1
Необходимо удалить запись из произвольной точки файла. Написал код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void delete_record()
{
    SONG tmp; 
        // #define SONG_SIZE sizeof(SONG)
    long delete_item_pos = (current_start + (current_line -3 ) / 2) * SONG_SIZE; 
    long next_item = delete_item_pos + SONG_SIZE;
    if (delete_item_pos < file_size * SONG_SIZE) {
        while (next_item < (file_size * SONG_SIZE)) {
            fseek(base,next_item,SEEK_SET);
            fread((char*)&tmp, SONG_SIZE, 1, base);
            fseek(base,delete_item_pos,SEEK_SET);
            fwrite((char*)&tmp, SONG_SIZE, 1, base);
//          fseek(base,delete_item_pos,SEEK_SET);
//          fflush(base);
            delete_item_pos += SONG_SIZE;
            next_item += SONG_SIZE;
        }   
        file_size--;
        chsize(_fileno(base), file_size * SONG_SIZE);
    }
}
Но при этом после выполнения fwrite данные не записываются в текущую позицию, а висят в буфере (fwrite Возвращает единицу) и после, при других операциях вывода или при закрытии, выводится в конце файла. Однако если раскоментировать fseek/fflush строки, это не решает проблемы, потому что все равно данные, при опустошении буфера, ставятся в конец файла! Подскажите, что я делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 22:21     Модификация записи в файле структур
Посмотрите здесь:

C++ удаление записи в бинарном файле
C++ число как номер записи в файле
C++ написать функцию для записи в файл массива структур
Удаление записи из массива структур. C++
C++ записи в файле записать в два списка
Написать функцию для записи в файл массива структур C++
Перетасовать записи в файле C++
C++ Std::ios::binary зачем нужно это для записи структур

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 09:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru