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

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

Войти
Регистрация
Восстановить пароль
 
Grizzz
4 / 4 / 3
Регистрация: 04.11.2012
Сообщений: 48
#1

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

28.09.2013, 17:08. Просмотров 227. Ответов 0
Метки нет (Все метки)

Вечер добрый. Проблема в процедурке 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос из бинарного файла в массив структур (C++):

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

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

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

Чтение массива структур из бинарного файла - C++
при выводе дает какую-то кашу из символов переписываю структуру из одного файла в 10. это необходимо для внешней сортировки слиянием ...

Чтение массива структур из бинарного файла - C++
Доброго времени суток.Возникла проблема с чтением структур из бинарного файла.Файл открывает,но при считывании данных, сразу закрывается с...

Заполнение динамического массива структур из бинарного файла - C++
Здравствуйте! Нужна помощь в реализации вот такого алгоритма: предположим, что изначально мы создали динамический массив структур и...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 17:08
Привет! Вот еще темы с ответами:

Вывести массив на экран из бинарного файла - C++
2. Компоненты заданного бинарного файла – массивы, состоящие из 4 вещественных чисел каждый. Вывести на экран сумму вторых элементов всех...

Чтение структуры из бинарного файла в массив - C++
Структура выглядит так: struct StandardBook { char ISBN; //регистрационный номер книги International Standard Book Number char...

Массив структур из файла - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include &lt;stdlib.h&gt; #include &lt;cstring&gt; #include...

Массив структур из файла - C++
Помогите, пожалуйста, с поиском ошибки. Нам дан текстовый файл, из 3 столбцов и 5 строк, с разделителями в виде пробелов и новой строки -...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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