Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
#1

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

10.04.2011, 22:21. Просмотров 266. Ответов 0
Метки нет (Все метки)

Необходимо удалить запись из произвольной точки файла. Написал код:
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 строки, это не решает проблемы, потому что все равно данные, при опустошении буфера, ставятся в конец файла! Подскажите, что я делаю не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 22:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Модификация записи в файле структур (C++):

Удаление записи из массива структур. - C++
Здравствуйте! Прошу помочь мне с таким делом: необходимо удалить запись из массива структур. int main() { struct List{ // Объявление...

Написать функцию для записи в файл массива структур - C++
помогите написать программу... может у кого нибудь уже есть готовая... нужно: 1) написать функцию для записи в файл массива структур ...

Написать функцию для записи в файл массива структур - C++
Помогите найти ошибку...выходит: undefined reference to `WinMain@16'| #include &quot;fstream&quot; #include &quot;iostream&quot; using namespace std; ...

Std::ios::binary зачем нужно это для записи структур - C++
зачем нужно это для записи структур ? гугл чёткого ответа не дал

Прочитать файл, заполнить контейнер структур и вывести построчно все записи, упорядоченные по возрастанию - C++
Помогите пожалуйста, только начала работать с файлами и не понимаю даже с чего начать. Текстовый файл содержит записи вида: Фамилия Имя...

Перетасовать записи в файле - C++
Надо случайным образом перемешать записи в файле, записей много около 10 000 000, скорость роботи программы не имеет значения. Идеально...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2011, 22:21
Привет! Вот еще темы с ответами:

Удаление записи в текстовом файле - C++
Как зделать удаление в текстовом файле по году ? Вот набросок : if (N != 0) { cout &lt;&lt;...

Дублируются записи в перезаписанном файле - C++
Доброй ночи, господа! Есть задание, в котором нужно заполнить структуру и записать ее в файл, а так же удалить из файла элемент по...

Удаление записи в бинарном файле - C++
Доброго времени суток, уважаемые. По заданию надо удалить запись из бинарного файла, скажите, есть ли какая-либо функция для этого? ...

число как номер записи в файле - C++
Всем привет, сижу делаю лабы по программированию, местами есть что-то непонятное/неясное, но тут столкнулся с заданием которое вообще...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru