Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Fliiz
0 / 0 / 1
Регистрация: 22.04.2015
Сообщений: 42
1

Запись структуры в бинарный файл

02.12.2015, 17:39. Просмотров 510. Ответов 2
Метки нет (Все метки)

Добрый вечере,народ. Нужна функция,которая будет записывать структуру в бинарный файл.То есть пользователь выбирает пункт "Save to File" и данные должны туда записаться:
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
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string.h>
#include <cstdio>
#include <stdlib.h>
#include <cstring>
#include <ctype.h>
 
using namespace std;
 
struct TData
{
    int price;
    char name[30];
    int age;
};
 
void Menu()
{
    cout<<setw(15)<<"Menu:"<<endl;
    cout<<"0: Exit" << endl;
    cout<<"1: Output"<< endl;
    cout<<"2: Save to File..."<< endl;
    cout<<"3: Load from File..."<< endl;
    cout<<"4: Search " << endl;
    cout<<"5: Write data"<<endl;
 
}
 
TData InputItem()
{
    TData item;
    cout<<"Enter Toy Name: ";
    cin.ignore();
    cin.getline(item.name, 29);
    cout<<"Enter Toy Price: ";
    cin>>item.price;
    cout<<"Enter Age: ";
    cin>>item.age;
    return item;
}
 
size_t InputItems(TData * data, size_t n, size_t maxSize)
{
    char c;
    do {
        if (n==maxSize)
        {
            cout << "Memory full!" << endl;
            getch();
            return n;
        }
 
        data[n]=InputItem();
        n++;
        cout << "Press \'Y\' for add data"
                " press any key otherwise" << endl;
        c = getch();
        cout << c << endl;
    }
    while(c == 'y' || c == 'Y');
    return n;
}
 
 
void PrintData(TData * data, size_t n)
{
    if (!n)
    {
        cout<<"No data"<<endl;
        return;
    }
 
    cout << setw(18) << "Toy Name "
         << setw(15) << "Toy Price   "
         <<"Age  "<< endl;
    for (size_t i=0; i<n; ++i)
    {
        cout<<setw(15)<<data[i].name
           <<setw(9)<<data[i].price
          <<setw(9)<<data[i].age<<endl;
    }
    cout << "\n";
}
 
void Find(TData * data, size_t n)
{
    int price;
    cout<<"Enter price: "<<endl;
    cin>>price;
    cout<<"Result: "<<endl;
 
    for(size_t i=0;i<n;i++)
    {
        if((data[i].price<price && data[i].age <=5))
        {
            cout<<" "<<data[i].name<<endl;
        }
    }
}
 
int main()
{
    //setlocale(LC_CTYPE, "rus");
    const size_t max=100;
    TData data[max];
    int size=0;
    char c='0';
    do
    {
        if (c>='0' && c<='5')
        {
            Menu();
        }
        c = getch();
        switch (c)
        {
        case '1':
            PrintData(data,size);
            break;
        case '5':
            size=InputItems(data,size,max);
            break;
        case '4':
            Find(data,size);
            break;
        }
    }
    while (c!='0');
 
   
 
    cout<<"Program successfully..." << endl;
    delete [] data;
    return 0;
}
Добавлено через 23 часа 27 минут
Кто-нибудь подскажите где ошибка? Почему функция fread не считывает данные из файла?
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <iostream>
#include <iomanip>
#include <cstring>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
 
using namespace std;
 
 
struct toys
{
    int price;
    char name[30];
    int age;
};
 
void Menu()
{
    cout<<setw(15)<<"Menu:"<<endl;
    cout<<"0: Exit" << endl;
    cout<<"1: Output"<< endl;
    cout<<"2: Save to File..."<< endl;
    cout<<"3: Load from File..."<< endl;
    cout<<"4: Search " << endl;
    cout<<"5: Write data"<<endl;
 
}
 
toys InputItem()
{
    toys item;
    cout<<"Enter Toy Name: ";
    cin.ignore();
    cin.getline(item.name, 29);
    cout<<"Enter Toy Price: ";
    cin>>item.price;
    cout<<"Enter Age: ";
    cin>>item.age;
 
    return item;
 
}
 
int InputItems(toys * data, int n, int max)
{
    char c;
    do {
        if (n==max)
        {
            cout<<"Memory full!"<<endl;
            getch();
            return n;
        }
 
        data[n]=InputItem();
        n++;
        cout << "Press \'Y\' for add data"
                " press any key otherwise" << endl;
        c=getch();
    }
    while(c == 'y' || c == 'Y');
 
    return n;
 
}
 
 
void PrintData(toys * data,int n)
{
 
    if (!n)
    {
        cout<<"No data"<<endl;
        return;
    }
 
    cout << setw(18) << "Toy Name "
         << setw(15) << "Toy Price   "
         <<"Age  "<< endl;
    for (int i=0; i<n; ++i)
    {
        cout<<setw(15)<<data[i].name
           <<setw(9)<<data[i].price
          <<setw(9)<<data[i].age<<endl;
    }
    cout << "\n";
}
 
void Find(toys * data, int n)
{
    int price;
    cout<<"Enter price: "<<endl;
    cin>>price;
    cout<<"Result: "<<endl;
 
    for(int i=0;i<n;i++)
    {
        if((data[i].price<=price && data[i].age <=5))
        {
            cout<<" "<<data[i].name<<endl;
        }
    }
}
 
 
int main()
{
    FILE * F;
    const int max=100;
    toys data[max];
    int n=0;
    char c='0';
    do
    {
        if (c>='0' && c<='5')
        {
            //system("pause");
            Menu();
        }
        c = getch();
        switch (c)
        {
        case '1':
            PrintData(data,n);
            break;
        case '5':
            n=InputItems(data,n,max);
            break;
        case '4':
            Find(data,n);
            break;
        case'2':
            F=fopen("G:\\c++_2kurs\\text.dat", "wb");
            if (F==0)
                cout << "File not created...";
            fwrite(data,sizeof(toys),n,F);
            cout<<"File was saved."<<endl;
            fclose(F);
            break;
        case'3':
            F=fopen("G:\\c++_2kurs\\text.dat", "rb");
            if (F==0)
                cout << "File not found...";
            /*fseek(F , 0 , SEEK_END);
            long l= ftell(F);
            rewind (F);
            cout<<l;*/
            fread(data,sizeof(toys),n,F);
            cout<<"File was loaded..."<<endl;
            fclose(F);
            break;
        }
    }
    while (c!='0');
 
    cout<<"Program  was successfully comleted...";
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2015, 17:39
Ответы с готовыми решениями:

Запись/Чтение структуры в файл (бинарный)
Всем привет! у меня такая задачка, очень простая. Нужно записать структуру в файл, а потом хочу...

Запись структуры (в ней есть поля типа данных char*) в бинарный файл
Всем привет! Есть такая структура: struct Telem { int key; char *mark; float engine;...

Запись структуры "Ноутбук" в бинарный файл
Добрый вечер! Мужики дайте совет, уже все облазил. Мне дали задание (его часть) - 1. написать...

Бинарный файл (с++) и структуры
Пользователь вводит количество студентов. Вводится информация о студенте и тут же выводится в...

Ввод и вывод структуры в бинарный файл
Всем привет, друзья! Как вообще происходит Ввод и вывод структуры в бинарный файл. Можете...

2
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
02.12.2015, 17:55 2
C++
1
2
n = l / sizeof(toys);
fread(data,sizeof(toys), n, F);
1
Fliiz
0 / 0 / 1
Регистрация: 22.04.2015
Сообщений: 42
02.12.2015, 18:46  [ТС] 3
Спасибо Большое!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2015, 18:46

Ввод/вывод структуры в текстовый и бинарный файл
есть код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

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

Запись в бинарный файл
Подскажите пожалуйста,где в коде ошибка??никак найти не могу почему х не считает. В файл...


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

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

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