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

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

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

Debug Assertion failed. Line 77. Expression (stream!=0) - C++

19.05.2014, 22:35. Просмотров 547. Ответов 7
Метки нет (Все метки)

Подскажите, пожалуйста, в чем заключается ошибка. Запускается, начинает работать, а потом пишет Debug Assertion failed. Line 77. Expression (stream!=0).




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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
 
void vvod(void);
void create_file(void);
void view_file(void);
void edit_file(void);
bool flag (void);
 
struct biblioteka {
    char imya[20];
    char nazva[20];
    char rik[5];
    char group[2];
    };
 
    FILE *bibliotek;
    FILE *temp;
    int select1;
    int p,n,u,j=0,k,i=0;
    struct biblioteka avtor,temporary;
    char surname[20];
    char surname_del[20];
    char surnomer[1];
 
void main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_CTYPE,"Russian");
    int select;
    for (;;) {
        puts("\n\t\t\tМЕНЮ");
        puts("\t\t1 - Создание нового файла");
        puts("\t\t2 – Просмотр файла");
        puts("\t\t3 – Корректировка записей файла");
        puts("\t\t4 – Выход");
        printf("Выберите  действие:  \r\n");
        scanf("%d",&select);
        fflush(stdin);
 
        switch (select) {
        case 1: create_file(); break;
        case 2: view_file(); break;
        case 3: edit_file(); break;
        case 4: exit(0);
        default: puts ( "Неверный выбор, нажмите любую клавишу"); _getch();
        }
    }
}
 
void vvod(void) {
    printf("\nВведите автора книги: "); scanf("%s",&avtor.imya); fflush(stdin);
    printf("Введите название книги: "); scanf("%s",&avtor.nazva); fflush(stdin);
    printf("\nВведите год выпуска: "); scanf("%s",&avtor.rik); fflush(stdin);
    printf("Введите групу книги: "); scanf("%s",&avtor.group); fflush(stdin);
   
   
}
 
void create_file(void) {
 
            do {
                fflush(stdin);
                vvod();
                fflush(stdin);
                fwrite (&avtor,sizeof(avtor),1,bibliotek);
                printf("\t\tПродолжить ( д / н )?");
            }
            while (flag()!=true);
            fclose(bibliotek);
}
 
void view_file(void) {
            while (fread(&avtor,sizeof(avtor),1,bibliotek)) {
                if (feof(bibliotek)) break;
                printf("#%s %s\t%s %s %s %s\n",avtor.imya, avtor.nazva, avtor.rik,avtor.group);
            }
            fclose (bibliotek);
}
 
void edit_file(void) {
    puts("\n\t\t\tВЫБЕРИТЕ КОМАНДУ");
            puts("\t\t1 - Изменить запись");
            puts("\t\t2 – Добавить запись");
            puts("\t\t3 – Удалить запись");
            scanf("%d",&select1); fflush(stdin);
            
            switch (select1) {
            case 1:
                printf("Введите автора для изменения: "); fflush(stdin);
                gets(surname);
                fread(&avtor,sizeof(avtor),1,bibliotek);
                while (!feof(bibliotek)) {
                    if (strcmp(avtor.imya,surname)==0) {
                        printf("#%s %s\t%i %i %i %i\n",avtor.imya,avtor.nazva,avtor.rik,avtor.group);
                        printf("\t\tИзменить? ( д / н )");
                        if (flag()!=true) {
                            fflush(stdin);
                            vvod();
                            fflush(stdin);
                            p=sizeof(avtor);
                            fseek(bibliotek,-p,1); 
                            fwrite(&avtor,sizeof(avtor),1,bibliotek);
                                break;
                        }
                    }
 
                    fread(&avtor,sizeof(avtor),1,bibliotek);
                }
                fclose (bibliotek);
                break;
            case 2:
                do {
                    fflush(stdin);
                    vvod();
                    fflush(stdin);
                    fwrite (&avtor,sizeof(avtor),1,bibliotek);
                    printf("\t\tПродолжить ( д / н )?");
 
                }
                while (flag()!=true);
                fclose (bibliotek);
                break;
            case 3:
                if(!(temp = fopen("temp.bin", "w+b"))) {printf("\t\tНевозможно открыть файл \n"); return; }
                printf("Введите автора для удаления: "); fflush(stdin);
                gets(surname_del);
                fread(&avtor,sizeof(avtor),1,bibliotek);
                while (!feof(bibliotek)) {
                    if (strcmp(avtor.imya,surname_del)!=0) {
                        fwrite(&avtor,sizeof(avtor),1,temp);
                        fread(&avtor,sizeof(avtor),1,bibliotek);
                    }   else fread(&avtor,sizeof(avtor),1,bibliotek);
                }
                fclose (bibliotek);
                remove ("biblioteka.bin");
                fclose (temp);
                rename ("temp.bin","biblioteka.bin");    //Меняем основной файл временным
                //Открываем новый созданный файл
                if(!(temp = fopen("biblioteka.bin", "r+b"))) {printf("\t\tНевозможно открыть файл \n"); return; }
                while (fread(&avtor,sizeof(avtor),1,bibliotek)) {
                    if (feof(temp)) break;
                    printf("#%s %s\t%i %i %i %i\n",avtor.imya, avtor.nazva, avtor.rik,avtor.group);
                }
                break;
            }
}
 
 
bool flag (void)
{
    char flag1;
    bool flag2=true;
    scanf("%c",&flag1);
    fflush(stdin);
    if (flag1!='Н' && flag1!='н') {
        flag2=false;
    }
    else flag2=true;
    return flag2;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 22:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Debug Assertion failed. Line 77. Expression (stream!=0) (C++):

Debug Assertion Failed! Expression: string subscript out of range - C++
Вот сегодня трудился целый день над игрой, и дошёл до момента когда начала появлятся выше перечисленая ошибка. Помогите найти ошибку. ...

Debug Assertion Failed! expression is_block_type valid(header-_block_use) - C++
Как я могу исправить эту ошибку? Не понимаю, почему она возникает. Ошибка возникает при возвращении результат функции prioritize. Причем...

ошибка "Debug Assertion Failed".Line 1441! - C++
вот код программы: #include &lt;SFML\Graphics.hpp&gt; #include&lt;xstring&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;limits&gt; ...

Debug assertion failed - C++
Проблема при попытке релиза, дебажится при этом нормально, объясните мне, что может быть не так, где искать баги. (скрин ниже) ...

Debug Assertion Failed - C++
Привет всем. Написал такую программу. #include &lt;stdio.h&gt; int n, m; int i, q, d; void merge(int a, int b, int c, int n, int...

Debug assertion failed - C++
Во время отладки вылазит такая ошибка,не могу понять в чём дело

7
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.05.2014, 23:02 #2
Где открытие файлов?
0
kira_1
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 59
19.05.2014, 23:05  [ТС] #3
Вначале файл создается, а потом уже просматривается.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.05.2014, 23:07 #4
Цитата Сообщение от kira_1 Посмотреть сообщение
Вначале файл создается, а потом уже просматривается.
Цитата Сообщение от alsav22 Посмотреть сообщение
Где открытие файлов?
В какой строке?
0
kira_1
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 59
19.05.2014, 23:09  [ТС] #5
Строки 78-80.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.05.2014, 23:19 #6
Цитата Сообщение от kira_1 Посмотреть сообщение
Строки 78-80.
Где там окрытие файла? Чтение - вижу, закрытие - вижу, открытия - не вижу.
0
kira_1
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 59
19.05.2014, 23:28  [ТС] #7
А скажите, пожалуйста, что нужно исправить.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.05.2014, 23:42 #8
Файл открыть (fopen()).
http://www.cplusplus.com/reference/cstdio/fopen/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2014, 23:42
Привет! Вот еще темы с ответами:

Debug Assertion Failed - C++
Создавал небольшой генератор ролей для персонажа и натолкнулся на проблему пиктрелейтед. До определенного момента все работало, пока я не...

Debug assertion failed - C++
Я в с++ делаю первые шаги, так-что прошу сильно не пинать :) При вызове этой функции int qwerty(CComQIPtr &lt;IBody2&gt; pBody) { ...

Debug Assertion Failed - C++
Ошибка. Не могу понять что не так. Как я понял с дебагера, проблема во втором освобождении памяти. Вообщем хелп ми) // hw_3.cpp :...

Debug Assertion Failed! - C++
Доброго времени суток. Имеется код: #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { setlocale(LC_ALL,...


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

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

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