Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++] Удаление данных из двоичного файла

271
20 июня 2007 года
MrXaK
721 / / 31.12.2002
Есть файл, двоичный, в нём хранится массив структур. Файл формируется так:
Код:
struct stud
{
    int shifr;
    char fio[255];
    float srbal;
};

void binaryOut(stud *students, int n)
{
    fstream file;
    file.open("test2.txt", fstream::out | fstream::binary | fstream::trunc);
    file.seekp(0, ios::beg);
    for( int j = 0; j < n; j++)
    {
        file.write((unsigned char*)&students[j], sizeof(students[j]));
    }
    file.close();
}


надо удалить из файла те записи, в которых srbal < 3
пока написал только читая все записи из файла в массив в памяти и затем запись в обнулённый файл только тех у кого условие выполняется... а нельзя ли без чтения удалить нужные записи напрямую из файла?

написал вот так?
Код:
void binaryParse(void)
{
    fstream file;
    file.open("test2.txt", fstream::binary | fstream::in);
    file.seekp(0, ios::beg);
    stud stud2[100];
    int i = 0;
    while (!file.eof())
    {
        file.read((unsigned char*)&stud2, sizeof(stud2));
        i++;
    }
    file.close();
    file.open("test2.txt", fstream::binary | fstream::out | fstream::trunc);
    for( int j = 0; j < i; j++ )
    {
        if (stud2[j].srbal < 3)
            continue;
        file.write((unsigned char*)&stud2[j], sizeof(stud2[j]));
    }
    file.close();
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог