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

Abnormal program termination (аварийное завершение программы) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.86
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 20:40     Abnormal program termination (аварийное завершение программы) #1
Из за чего программа может выдать abnormal program termination (аварийное завершение программы), программа должна открывать файл...и закрывать!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
24.12.2010, 20:48     Abnormal program termination (аварийное завершение программы) #2
Цитата Сообщение от Грибочек Посмотреть сообщение
Из за чего программа может выдать abnormal program termination (аварийное завершение программы), программа должна открывать файл...и закрывать!
Дык код напишите, то.
Телепаты в отпуске
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 20:52  [ТС]     Abnormal program termination (аварийное завершение программы) #3
Цитата Сообщение от knkd Посмотреть сообщение
Дык код напишите, то.
Телепаты в отпуске
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
#include <stdio.h>
#include <conio.h>
void corct();
void fsrch();
void addfn();
void delst();
void refrh();
typedef struct abonent{
    char name[100];
    char login[100];
    char password[100];
    char type[100];
    char date_m[100];
    char date_r[100];
};
abonent mas[100];
FILE *f;
int n=0,c,q=0,i,z=0;
void main(){
    do{
    n=0;
    f=fopen("DB.txt","r+");
    do{
    fscanf(f,"%s %s %s %s %s %s",&mas[n].name,&mas[n].login,&mas[n].password,&mas[n].type,&mas[n].date_m,&mas[n].date_r);
    n++;
    }while(!feof(f));
    fclose(f);
    printf("-------------------------------\n");
    printf("MENY / Q - korugyvatu / W - poshyk / E - dodatu / R - vudalut / T - vuhid /\n");
    c=getch();
    switch(c){
    case 113: //Q
         corct();
         break;
    case 119: //W
         fsrch();
         break;
    case 101: //E
         addfn();
         break;
    case 114: //R
         delst();
         break;
    case 116: //T
         q=1;
         break;
    }
    if(z==0) refrh(); else z=0;
    }while(q==0);
}
void corct(){
    int ch=0,par=0;
    for(i=0;i<n;i++)
    printf("%d | %s %s %s %s %s %s \n",(i+1),mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
    printf("wedite nomer polia i nomer parametra: ");
    scanf("%d %d",&ch,&par);
    if((ch>=(i+1) || ch<1)) printf("Your choise is out of value! \n");
    else
    switch(par){
    case 1:
        printf("Vvedit NAME: ");
        scanf("%s",&mas[ch-1].name);
        break;
    case 2:
        printf("Vvedit LOGIN: ");
        scanf("%s",&mas[ch-1].login);
        break;
    case 3:
        printf("Vvedit PASSWIORD: ");
        scanf("%s",&mas[ch-1].password);
        break;
    case 4:
        printf("vvedit TYPE: ");
        scanf("%s",&mas[ch-1].type);
        break;
    case 5:
        printf("Vvedit MISAC: ");
        scanf("%s",&mas[ch-1].date_m);
        break;
    case 6:
        printf("Vvedit RIK: ");
        scanf("%s",&mas[ch-1].date_r);
        break;
    default: printf("Out of value!\n");
    }
}
void fsrch(){
    int md=0;
    printf("Vvedite nomer parametra: ");
    scanf("%d",&md);
    if(md>6 || md<1) printf("Out of value!\n");
    else{
    for(i=0;i<n;i++){
        switch(md){
        case 1: printf("%d | %s | %s %s %s %s %s \n",i+1,mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r); break;
        case 2: printf("%d | %s | %s %s %s %s %s \n",i+1,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r,mas[i].name); break;
        case 3: printf("%d | %s | %s %s %s %s %s \n",i+1,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r,mas[i].name,mas[i].login); break;
        case 4: printf("%d | %s | %s %s %s %s %s \n",i+1,mas[i].type,mas[i].date_m,mas[i].date_r,mas[i].name,mas[i].login,mas[i].password); break;
        case 5: printf("%d | %s | %s %s %s %s %s \n",i+1,mas[i].date_m,mas[i].date_r,mas[i].name,mas[i].login,mas[i].password,mas[i].type); break;
        }
    }
    }
}
void addfn(){
    printf("dodatu element(name,login,password,type,misac,rik): \n");
    scanf("%s %s %s %s %s %s",&mas[n].name,&mas[n].login,&mas[n].password,&mas[n].type,&mas[n].date_m,&mas[n].date_r);
    n++;
}
void delst(){
    int nmbr=0;
    for(i=0;i<n;i++)
    printf("%d | %s %s %s %s %s %s \n",(i+1),mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
    printf("Vvedite nomer elementa, Yakui treba vidalut ");
    scanf("%d",&nmbr);
    f=fopen("DB.txt","w+");
    nmbr--;
    if(nmbr!=(n-1)){
    for(i=0;i<n;i++){
        if(i!=nmbr){
        if(i<(n-1))
            fprintf(f,"%s %s %s %s %s %s \n",mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
        else
            fprintf(f,"%s %s %s %s %s %s",mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
        }
    }
    }
    if(nmbr==(n-1)){
    for(i=0;i<n-1;i++){
        if(i<(n-2))
        fprintf(f,"%s %s %s %s %s %s \n",mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
        else
        fprintf(f,"%s %s %s %s %s %s",mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
    }
    }
    fclose(f);
    z=1;
}
void refrh(){
    f=fopen("DB.txt","w+");
    for(i=0;i<n;i++)
    if(i<(n-1)) fprintf(f,"%s %s %s %s %s %s \n",mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
    else fprintf(f,"%s %s %s %s %s %s",mas[i].name,mas[i].login,mas[i].password,mas[i].type,mas[i].date_m,mas[i].date_r);
    fclose(f);
}
ну лучше быть телепатом...
Само открытие файла в мейне, просто не хочу код резать...но если нада только скажите!!
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
24.12.2010, 21:06     Abnormal program termination (аварийное завершение программы) #4
Даже не разбираясь во всём остальном:
C
1
f=fopen("DB.txt","r+");
После этого должна идти проверка на NULL.
C
1
2
3
4
5
6
const char * name = "DB.txt";
f=fopen(name,"r+");
if (f == NULL) {
    fprintf(stderr, "File %s not found, or inaccessible.\n", name);
    exit(1);
}
Тут по-хорошему, нужно проверять сколько на самом деле прочитано:
C
1
2
3
4
5
int nread;
nread = fscanf(f,"%s %s %s %s %s %s",&mas[n].name,&mas[n].login,&mas[n].password,&mas[n].type,&mas[n].date_m,&mas[n].date_r);
if (nread < <сколько нам нужно>) {
    <пишем сообщение об ошибке и завершаемся>
}
И так далее.
Никому нельзя доверять без проверки, даже себе
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 21:18  [ТС]     Abnormal program termination (аварийное завершение программы) #5
Тоже самое пишет!
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
24.12.2010, 21:20     Abnormal program termination (аварийное завершение программы) #6
А из-за вот этого:
C
1
#include <conio.h>
У меня, как и у большинства людей, ничего не скомпилируется.
Потому что это системно-зависимая библиотека, специфичная для компиллятора.

Может в такой простой программе можно обойтись стандартной библиотекой?
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 21:23  [ТС]     Abnormal program termination (аварийное завершение программы) #7
Цитата Сообщение от knkd Посмотреть сообщение
Может в такой простой программе можно обойтись стандартной библиотекой?
в библиотеке <conio.h> содержится функция getch() в програме она присудствует.
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
24.12.2010, 21:38     Abnormal program termination (аварийное завершение программы) #8
Цитата Сообщение от Грибочек Посмотреть сообщение
в библиотеке <conio.h> содержится функция getch() в програме она присудствует.
В программе то может и присутствует, но у меня в компиляторе такой нет
А тем временем, в стандартной библиотеке:
C
1
#include <stdio.h>
Есть на выбор функции:
C
1
2
3
4
int getchar(void);
int getc(FILE *stream);
char *gets(char *str);
char *fgets(char *str, int num, FILE *stream);
И многие, многие другие
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 21:47  [ТС]     Abnormal program termination (аварийное завершение программы) #9
Цитата Сообщение от knkd Посмотреть сообщение
В программе то может и присутствует, но у меня в компиляторе такой нет
А вы проверяли ее у себя на компиляторе?
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 21:55  [ТС]     Abnormal program termination (аварийное завершение программы) #11
Цитата Сообщение от knkd Посмотреть сообщение
Потому что:
conio.h (от англ. console input-output — консольный ввод-вывод) — заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя. Тем не менее, он не является частью языка программирования Си, стандартной библиотеки языка Си, ISO C или требуемой стандартом POSIX.
так это значит что нужно все таки заменять стандартной библиотекой?
Афоня
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 12
24.12.2010, 21:56     Abnormal program termination (аварийное завершение программы) #12
Цитата Сообщение от knkd Посмотреть сообщение
char *gets(char *str);
а что эта строка делает? извините за оффтоп

Добавлено через 21 секунду
читает строку?
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
24.12.2010, 21:59  [ТС]     Abnormal program termination (аварийное завершение программы) #13
Цитата Сообщение от Афоня Посмотреть сообщение
а что эта строка делает?
Функция gets() читает символы из стандартного потока stdin и помешает их в массив символов, адресуемый указателем str. Символы читаются до тех пор, пока не встретится разделитель строк или значение EOF.
Афоня
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 12
24.12.2010, 22:05     Abnormal program termination (аварийное завершение программы) #14
спасибки)
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
24.12.2010, 22:06     Abnormal program termination (аварийное завершение программы) #15
Цитата Сообщение от Грибочек Посмотреть сообщение
так это значит что нужно все таки заменять стандартной библиотекой?
Желательно.
Во-первых - будет работать на любом компилляторе.
Во-вторых - будете изучать язык Си, а не особенности доисторического Борланда


Цитата Сообщение от Афоня Посмотреть сообщение
читает строку?
И записывает её в массив НЕ ПРОВЕРЯЯ ГРАНИЦ!
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
25.12.2010, 01:25  [ТС]     Abnormal program termination (аварийное завершение программы) #16
я нашла ошибку!!!!!!!!!!!!!
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
25.12.2010, 01:34     Abnormal program termination (аварийное завершение программы) #17
Столько программировать вредно
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
25.12.2010, 01:43  [ТС]     Abnormal program termination (аварийное завершение программы) #18
Цитата Сообщение от knkd Посмотреть сообщение
Столько программировать вредно
Мне не вредно, мне полезно!!!!
Завтра нужно лабораторную сдать, ну конечно еще половинку сделать, и переходить на С++
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
25.12.2010, 01:58     Abnormal program termination (аварийное завершение программы) #19
Сдать и забыть? Эхх
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2010, 02:00     Abnormal program termination (аварийное завершение программы)
Еще ссылки по теме:

C++ Аварийное завершение программы (Process terminated with status -1073741510)
Рекурсивная функция/аварийное завершение программы C++
C++ Аварийное завершение программы (Прата, глава 12, string1)

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

Или воспользуйтесь поиском по форуму:
Грибочек
 Аватар для Грибочек
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 68
25.12.2010, 02:00  [ТС]     Abnormal program termination (аварийное завершение программы) #20
Цитата Сообщение от knkd Посмотреть сообщение
Сдать и забыть? Эхх
неа...мне понравилось...хочу еще немного помучать свою голову...у меня будет месяц каникут то будет время, просто что сейчас вообще нету времени....
Yandex
Объявления
25.12.2010, 02:00     Abnormal program termination (аварийное завершение программы)
Ответ Создать тему
Опции темы

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