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

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

Войти
Регистрация
Восстановить пароль
 
Shiman_Gleb
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 51
#1

Ошибка при удаление из бинарного файла - C++

20.05.2014, 17:20. Просмотров 225. Ответов 8
Метки нет (Все метки)

Нужно удалить из бинарного файла, содержащего информацию о студентах, определённого человека. Но когда выполняется процедура, выдаёт: Необработанное исключение в "0x509bad54 (msvcp100d.dll)" в "2.exe": 0xC0000005: Нарушение прав доступа при записи "0xfeeefeee". Где ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
void delete_data()
{
    students del[200];
    students look;
    cout<<"Please, enter the name of file:";
    string filename;
    cin>>filename;
    cout<<"Now, Enter the sirname and name of student to delete:";
    string FN,N;
    cin>>FN>>N;
    F.open(filename,ios::in | ios::binary);
    int n=0;
    while (F.read((char*)&look.FamN,sizeof(look.FamN)))
    {
        del[n].FamN=look.FamN;
        F.read((char*)&look.Name,sizeof(look.Name));
        del[n].Name=look.Name;
        F.read((char*)&look.FatN,sizeof(look.FatN));
        del[n].FatN=look.FatN;
        F.read((char*)&look.age,sizeof(look.age));
        del[n].age=look.age;
        F.read((char*)&look.gender,sizeof(look.gender));
        del[n].gender=look.gender;
        F.read((char*)&look.course,sizeof(look.course));
        del[n].course=look.course;
        for (int i=0; i<am; i++) 
            {
                int mar;
                F.read((char*)&mar,sizeof(mar));
                del[n].mark.push_back(mar);
            }
        n++;
    }
    F.close();
    F.open(filename,ios::out | ios::binary);
    F.clear();
    for (int i=0; i<n; i++) if (del[i].FamN!=FN || del[i].Name!=N) 
        {
            stuff.FamN=del[i].FamN;
            F.write((char*)&stuff.FamN,sizeof(stuff.FamN));
            stuff.Name=del[i].Name;
            F.write((char*)&stuff.Name,sizeof(stuff.Name));
            stuff.FatN=del[i].FatN;
            F.write((char*)&stuff.FatN,sizeof(stuff.FatN));
            stuff.age=del[i].age;
            F.write((char*)&stuff.age,sizeof(stuff.age));
            stuff.gender=del[i].gender;
            F.write((char*)&stuff.gender,sizeof(stuff.gender));
            stuff.course=del[i].course;
            F.write((char*)&stuff.course,sizeof(stuff.course));
            for (int j=0; j<am; j++) 
                {
                    int mar=del[i].mark[j];
                    F.write((char*)&mar,sizeof(mar));
                }
        }
    F.close();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 17:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при удаление из бинарного файла (C++):

Ошибка при чтении бинарного файла - C++
почему у меня выводит два раза последнюю запись при чтении??(а файл записываю класс с 3 полями(номер,фамилия,код) #include &quot;stdafx.h&quot;...

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

Удаление бинарного файла - C++
Доброго времени суток! Не могу удалить файл &quot;prile.dat&quot;. Смысл функции &quot;find_and_change&quot; в том, чтобы скопировать часть содержимого из...

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

Удаление записи из бинарного файла - C++
Задача - удалить запись из бинарного запись по имени find находит запись, которую нужно удалить cur - текущая позиция del - удаляемая...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.05.2014, 17:31 #2
students - это что? Структура?
0
Shiman_Gleb
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 51
20.05.2014, 17:35  [ТС] #3
Да. Описывает фамилию, имя, отчество, возраст, пол, курс и оценки.
C++
1
2
3
4
5
6
7
8
9
10
 struct students
{
    string FamN;
    string Name;
    string FatN;
    unsigned int age;
    char gender;
    unsigned short int course;
    vector <int> mark;
};
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.05.2014, 17:36 #4
Что такое stuff? Откуда ты его взял? В del[] записал, оттуда и бери.
0
Shiman_Gleb
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 51
20.05.2014, 17:37  [ТС] #5
А, это вместо look. Забыл переправить, но ошибка была до этого.
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.05.2014, 17:44 #6
В string дело. Это же класс, а не массив, внутреннее представление не известно. Замени их на массивы char фиксированной длины или преобразуй перед записью в обычные строки с фиксированной длиной.
0
Shiman_Gleb
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 51
20.05.2014, 17:47  [ТС] #7
"Преобразуй перед записью в обычные строки с фиксированной длиной" - это как? Перекопировать в массив char? И надо ли, если я записывал туда данные тоже через string?
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.05.2014, 17:51 #8
Ты записываешь уже не верно. Поэтому и чтение у тебя не будет работать.
Ну да, копировать в char или сразу в структуре использовать char. Главное, чтобы длина была точная.
0
Shiman_Gleb
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 51
20.05.2014, 17:54  [ТС] #9
Сейчас попробую...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 17:54
Привет! Вот еще темы с ответами:

Ошибка при реализации бинарного дерева: error C1075: конец файла обнаружен ранее, чем левая фигурная скобка - C++
Почему выскакивает ошибка? Вроде все правильно. error C1075: конец файла обнаружен ранее, чем левая фигурная скобка &quot;{&quot; в...

Сортировка\редактирование\удаление бинарного файла - C++
Люди помогите пожалуйста... В бинарном файле у меня находятся сведения о нуждающихся в пособии. Имеются функции создания\откртия файла,...

Ошибка чтения из бинарного файла - C++
Вызвано исключение: нарушение доступа для чтения. _Pnext было 0x114999C. Что значит эта ошибка? При чем она вылетает, если...

Баг при заполнении бинарного файла - C++
Для записи используем структуру с полями фамилия|имя, номер телефона, дата рождения (массив из 3-х чисел). При записи 1-й структуры...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.05.2014, 17:54
Ответ Создать тему
Опции темы

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