Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Grizzz
4 / 4 / 9
Регистрация: 04.11.2012
Сообщений: 48
0

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

28.09.2013, 17:08. Просмотров 249. Ответов 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
Готовые ответы и решения:

Запись из бинарного файла, в массив структур
Имеется бинарный файл, в него записан массив структур.Как мне произвести запись из файла в массив?

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

Нужно сохранить и прочитать динамический массив структур из бинарного файла
struct city{ char name_city; char metro; int year_city; int naselenie; };

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

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

0
Другие темы раздела
C++ Зачем учить С++? http://www.cyberforum.ru/cpp-beginners/thread964331.html
Приветствую всех. Сижу сейчас, читаю книгу по С++ (С++ за 21 день) и тут мне в голову приходит вопрос: "Зачем я учу С++?". Так вот. Должно ли быть так, что когда я только начал учить С++, я не знаю...
C++ Умножение матриц в С++ Помогите, пожалуйста, кто может!!! Нужно рабочее перемножение матриц, а Div выдает уж очень астрономические числа в итоге! Вот код: //A*B #include <iostream> using namespace std; void... http://www.cyberforum.ru/cpp-beginners/thread964327.html
C++ Передача двухмерного массива функции
Подскажите пожалуйста как передать статический массив array в функцию fn(), т.е. #include <iostream> using namespace std; void fn()///???? int main() { int array; fn(array); }
Как задать символ \ , за которым следует трёхразрядное восьмеричное число C++
Задание выглядит следующим образом Построить минимальный детерминиро¬ванный конечный распознаватель заданного языка Строковая константа – последовательность символов, заключённая в кавычки....
C++ Вывести вектором не нулевые элементы массива http://www.cyberforum.ru/cpp-beginners/thread964265.html
Доброго времяни суток,подскажите как вывести вектором не нулевые элементы массива С?#include <iostream> #include <conio.h> using namespace std; int main() { const int N=4; const...
C++ Исследование сортировки метода "пузырек" для большого массива Нужно реализовать сортировку большого массива методом "пузырек" (для 100, 1.000 и 10.000 элементов). Должен присутствовать ввод колличества элементов масива, рандомная их генерация (от -100 до 100... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru