Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
1

Прекращение работы программы при заполнении года

23.05.2015, 12:15. Показов 736. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
всем привет)есть такой кусок кода
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
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "malloc.h"
#define FILE_NAME "cinema.dat"
 
struct CINEMA {
    char name[20]; 
   int year; 
   char janr[20]; 
   char rejiser[20]; 
   char lead_actor[200]; 
   
}CINEMA;
 
struct CINEMA *p;
 
int main()
{
    int variant;
    FILE *f;
    do
    {
        printf("\n Menu: \n"
               " 1. input\n"
               " 2. view\n"
               " 3. Search\n"
               " 0. Exit\n"
               "\n");
        scanf("%d",&variant);
 
        switch (variant) {
        case 1: //input
            if((f=fopen(FILE_NAME, "ab"))==NULL) return 1;
 
            p = (struct CINEMA*)malloc(sizeof(struct CINEMA));
 
            printf("name : ");scanf("%s",p->name);
            printf("year : ");scanf("%d",p->year);
            printf("janr : ");scanf("%s",p->janr);
            printf("director : ");scanf("%s",&p->rejiser);
            printf("lead_actor : ");scanf("%s",p->lead_actor);
          
            fwrite(&p, sizeof(p),1,f);
            fclose(f);
            free(p);
            break;
        
        case 2: //read
            
            if((f=fopen("cinema.dat", "rb"))==NULL) return 1;
            p = (struct CINEMA*)malloc(sizeof(struct CINEMA));
           
            
            while(fread(&p,sizeof(p),1,f)) {
                
                printf("\n%s %d %s %s %s\n",p->name,p->year,p->janr,p->rejiser,p->lead_actor);
            
            }
         
            fclose(f);
            free(p);
            break;
        case 3: //search
            char name[20];// int min, max;
            if((f=fopen(FILE_NAME, "rb"))==NULL) return 1;
            p = (struct CINEMA*)malloc(sizeof(struct CINEMA));
            
            printf ("\n Select name : \n");
            scanf("%s",name);
 
 
        
            while(fread(&p,sizeof(p),1,f))
            {
                if(!strcmp(p->name,name))
                    printf("\n%s %d %s %s %s\n",p->name,p->year,p->janr,p->rejiser,p->lead_actor);
            }
        
            fclose(f);
            free(p);
            break;
        default:
            if (variant) printf("\n Error, try again :/ \n");
        }
    } while (variant);
 
  return 0;
}
проблема в том, что когда например заполняю базу фильмов, программа вылетает при заполнении года и так же в других местах. как это исправить?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2015, 12:15
Ответы с готовыми решениями:

При запуске выскакивает принудительное прекращение работы программы
Имею вот такую функцию. Она работает всё выводит правильно но после этого выскакивает окно о...

Прекращение работы (вылет) программы при попытке вывести в поток значения динамического массива
Доброго всем времени суток. Подскажите пожалуйста, почему возникает следующая проблема. Есть...

Прекращение работы программы
int main(){ int i; cin>>i; cout<<i; if(i==5) cout<<"i="<<i<<endl; else (как тут...

Прекращение работы программы С++
После того как запускаю консоль ввожу одну строчку нажимаю enter и вылетает окно виндовс...

3
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
23.05.2015, 12:18 2
C++
1
scanf("%d", &(p->year));
И какой смысл выделять память для одной структуры? Опиши её статически и пользуйся.
1
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
23.05.2015, 12:38  [ТС] 3
спасибо) на просмотре тоже вылетает) помоги пожалуйста)
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
23.05.2015, 17:11 4
sizeof(p) - это размер указателя. Должно быть sizeof(CINEMA). Всюду.
В функции записи и чтения передавать просто p, а не &p.
1
23.05.2015, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2015, 17:11
Помогаю со студенческими работами здесь

Графы - Прекращение работы программы
Помогите кому не сложно, само задание(если нужно): Определить кол-во компонент связности дополнения...

Внезапное прекращение работы программы
#include<iostream> #include<cstdlib> #include<conio.h> #include<ctime> using namespace std; ...

Прекращение работы программы main.exe. Graphics.h. CodeBlocks
Не могу вывести изображение на экран из-за этой ошибки. Что делать? помогите пж)

Прекращение работы программы
int main() { string s; int c=0; int g={0}; int j=1,i=1; cin>>s;

Прекращение работы программы
Здравствуйте Программа создает на экране сетку, каждую клетку которой возможно окрасить в один из...

boost::bind прекращение работы программы microsoft optimizing compile
Всем привет! При компилирование выскакивает окошко с надписью "прекращение работы программы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru