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

из бинарного файла в массив структур - C++

Восстановить пароль Регистрация
 
Grizzz
4 / 4 / 3
Регистрация: 04.11.2012
Сообщений: 48
28.09.2013, 17:08     из бинарного файла в массив структур #1
Вечер добрый. Проблема в процедурке dop(нужно вставить в определенное место структуру).Так вот я решил переписать из бинарного файла информацию в массив структур и уже в массив добавлять структуру,но программа вылетает как только я ввожу фио пациента после которого нужно вставить структуру. В чем проблема???
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
using namespace std;
struct lol
{
    char FIO[50];
    char diz[30];
    int  post;
    char pol;
} zp;
 
void input(FILE *);
void show ();
void dop (FILE *, char* n);
void search(char* n);
FILE *f;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    
    char c;
    int n;
    char str[50],ctr[50];
    FILE *f;
    
    f=fopen("base.dat","r");
    c=' ';
    while (c!='0')
    {
        system("cls");
        cout<<"1-create file\n";
        cout<<"2-show file\n";
        cout<<"3-app file \n";
        cout<<"4-search \n";
        cout<<"5-status of patients \n";
        cout<<"0-exit";
        c=getch();
        switch (c)
        { 
            case '1':input(f);break;
            case '2' :show();break;
            case '3':system("cls");cout<<"Введите фамилию больного"<<endl; cin>>ctr; dop(f,ctr);break;
            case '4':system("cls");cout<<"Введите фамилию больного"<<endl; cin>>str;search(str);break;
            case '0' : return 0;
            default : cout<<" error ";return 0;
        }
    }
    system("pause");
}
 
void input (FILE *f)
{
    ifstream F;
    lol zp;
    char filename[30];
    f = fopen("base.dat","wb");
    printf("\nВведите имя файла с данными\n");
    scanf("%s", filename);
    F.open (filename, ios::in);
    if(!F.is_open()){ 
        cout<<"can't open this file\n";}
    while (true)
    {
        F >> zp.FIO;
        if (!F) break;
        F >> zp.diz;
        F >> zp.post;
        F >> zp.pol;
        fwrite(&zp, sizeof(zp), 1, f);
    }
    fclose(f);
    F.close();
}
 
void show ()
{
    int i;
    system("cls");
    f=fopen("base.dat","rb");
    i=1;
    printf("\n   --------------------------------------------------\n");
    printf("   |    ФИО    |   Диагноз    |Пол|  Дата поступления |\n");
    printf("   ------------+--------------+---+-------------------\n");
    
    while (fread(&zp, sizeof(zp), 1, f))
    { 
        printf("%3d   %3s        %4s         %c          %3d", i, zp.FIO, zp.diz, zp.pol, zp.post);
        printf("\n   --------------------------------------------------\n");
        i++;
    }
    i=0;
    getch();
}
void dop (FILE *f,char* n)
{   int p,m;
    lol sp[10000];
    lol dp;
    system("cls");
    setlocale(LC_ALL,"Rus");
    p=0;
    m=0;
    f=fopen("base.dat","rb");
    while (fread(&zp,sizeof(lol),1,f)) 
    {char* r =zp.FIO;
     if (strcmp(n,r)==0){m=p;}
     sp[p]=zp;
     p++;
    }
    printf("\n Введите информацию о пациенте \n");
    printf("\n ФИО: ");
    scanf("%s",dp.FIO);
    printf("Диагноз: ");
    scanf("%s",&dp.diz);
    printf("Пол: ");
    scanf("%s",&dp.pol);
    printf ("Дата поступления: ");
    scanf("%d",&dp.post);
    for(int i=p;i>=m+1;i--)
    {sp[i+1]=sp[i];}
     sp[m+1]=dp;
     p++;
    getch();
    }
void search (char* n)
    {f=fopen("base.dat","rb");
    while (fread(&zp, sizeof(zp),1,f))
    {char* r =zp.FIO;
    if (strcmp(n,r)==0)
    { printf(" %s    %s   %s    %3d",zp.FIO,zp.diz,zp.pol,zp.post);
    printf("      \n--------------------------------------------------\n");
    }
    }
    fclose(f);
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 17:08     из бинарного файла в массив структур
Посмотрите здесь:

Считать массив структур из файла C++
Считывание из файла в массив структур C++
Вывести массив на экран из бинарного файла C++
Чтение структуры из бинарного файла в массив C++
Считать массив структур из файла C++
C++ Массив структур из файла
C++ Чтение массива структур из бинарного файла
Считать из бинарного файла в массив структур фамилию, имя, оценку по математике, оценку по информатике C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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