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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
kitten
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
#1

Чтение из бинарного файла - C++

06.04.2009, 20:20. Просмотров 2421. Ответов 8
Метки нет (Все метки)

Создала Базу данных. запись в файл происходит, а чтение из файла не получается. исправьте, пожалуйста, или подскажите как?
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
struct dataRow
{
    int id;
    char* surname_owner;
    int number_of_processors; //число процессоров
    char* type_of_processors; //тип процессоров
    int size_memory; //объем памяти
    char* type_of_video_controller; //тип видеоконтроллера
    int size_of_video_buffer; //объем видеопамяти
    char* type_of_hard_disk; //тип винчестера
    int number_of_hard_disk; //число винчестера
    char* capacity_of_hard_disk; //емкость винчестера
    int number_of_integrated_controller; //кол-во интегрированных контроллеров
    int number_of_outside_device; //колво внешних устройств
    char* operational_system; //операционная система
    //char str[256];
};
 
struct dataTable
{
    struct dataRow Rows[100];
    int RowNumber;
};
 
void printRow(struct dataRow Row)
{
    printf("%d %s %d %s %d %s %d %s %d %s %d %d %s\n", Row.id, Row.surname_owner, Row.number_of_processors, Row.type_of_processors, Row.size_memory, Row.type_of_video_controller, Row.size_of_video_buffer, Row.type_of_hard_disk, Row.number_of_hard_disk, Row.capacity_of_hard_disk, Row.number_of_integrated_controller, Row.number_of_outside_device, Row.operational_system);
}
 
 int writeInt(FILE* stream, int a)
 {
     fwrite(&a, sizeof(int), 1,stream);
 }
 
 void writeString(FILE* stream, char *a)
 {
    writeInt(stream, (int)strlen(a));
    fwrite(a, strlen(a), 1, stream);
 }
 
 int readInt(FILE* stream)
 {
     int showing;
     fread(&showing, sizeof(int), 1, stream);
 }
 
 
     char* readString(FILE* stream)
{
 
    int size = readInt(stream);
    char* res = new char[size + 1];
    fread(res, size, 1, stream);
    return res;
}
 
 void addRow(struct dataRow row, struct dataTable* table)
 {
     table->Rows[table->RowNumber]=row;
     table->RowNumber++;
 }
 
void readTable(FILE* stream, struct dataTable* table)
{
    int k=0;
    k=readInt(stream);
    struct dataRow row;
    for(int i=0; i< k; i++)
    {
        row.id =readInt(stream);
        row.surname_owner =readString(stream);
        row.number_of_processors =readInt(stream);
        row.type_of_processors =readString(stream);
        row.size_memory =readInt(stream);
        row.type_of_video_controller =readString(stream);
        row.size_of_video_buffer =readInt(stream);
        row.type_of_hard_disk =readString(stream);
        row.number_of_hard_disk =readInt(stream);
        row.capacity_of_hard_disk =readString(stream);
        row.number_of_integrated_controller =readInt(stream);
        row.number_of_outside_device =readInt(stream);
        row.operational_system =readString(stream);
        addRow(row, table);
    }
}
 
void writeTable(FILE* stream, struct dataTable table)
{
    int i;
    writeInt(stream, table.RowNumber);
    for(i=0; i<table.RowNumber; i++)
    {
        writeInt(stream, table.Rows[i].id);
        writeString(stream, table.Rows[i].surname_owner);
        writeInt(stream, table.Rows[i].number_of_processors);
        writeString(stream, table.Rows[i].type_of_processors);
        writeInt(stream, table.Rows[i].size_memory);
        writeString(stream, table.Rows[i].type_of_video_controller);
        writeInt(stream, table.Rows[i].size_of_video_buffer);
        writeString(stream, table.Rows[i].type_of_hard_disk);
        writeInt(stream, table.Rows[i].number_of_hard_disk);
        writeString(stream, table.Rows[i].capacity_of_hard_disk);
        writeInt(stream, table.Rows[i].number_of_integrated_controller);
        writeInt(stream, table.Rows[i].number_of_outside_device);
        writeString(stream, table.Rows[i].operational_system);
    }
}
 
void printTable(struct dataTable table)
{
    printf("i s_o n_of_p t_of_p d_s t_of_v_c s_of_v_c t_of_v_b n_of_h_d t_of_h_d n_of_i_c n_of_o_d o_s\n");
    FILE *file;
    file = fopen("KR.txt", "rb");
 
    for(int i=0; i=!feof(file); i++)
    {
        struct dataTable table;
        struct dataRow row;
        //FILE *file;
        fread (&row, sizeof(struct dataRow), 1, file);
        printRow(table.Rows[i]);
        //fclose(file);
 
        //printRow(table.Rows[i]);
        //fread (&table, sizeof(struct dataRow), 1, file);
    }
}
 
int main()
{
    int number;
    //FILE *file;
    //file = fopen("KR.txt", "ab");
    //fscanf(file, "id surname_owner    number_of_processors type_of_processors size_memory type_of_video_controller size_of_video_controller    type_of_video_buffer number_of_hard_disk type_of_hard_disk number_of_integrated_controller number_of_outside_device operational_system", stream);
    printf("MENU\nFor adding row print 1\nFor showing table print 2\nFor searching print 3\n");
    scanf("%i", &number);
    //FILE *file;
   // file = fopen("KR.txt", "rb");
 
    if(number == 1)
    {
 
        //for(int id=1, id<RowNumber, id++)
        //{
        struct dataRow row;
        printf ("Enter id\n");
        scanf ("%d", &row.id);
        printf ("Enter surname_owner\n");
        scanf ("%s", &row.surname_owner);
        printf ("Enter number_of_processors\n");
        scanf ("%d", &row.number_of_processors);
        printf ("Enter type_of_processors\n");
        scanf ("%s", &row.type_of_processors);
        printf ("Enter size_memory\n");
        scanf ("%d", &row.size_memory);
        printf ("Enter type_of_video_controller\n");
        scanf ("%s", &row.type_of_video_controller);
        printf ("Enter size_of_video_buffer\n");
        scanf ("%d", &row.size_of_video_buffer);
        printf ("Enter type_of_hard_disk\n");
        scanf ("%s", &row.type_of_hard_disk);
        printf ("Enter number_of_hard_disk\n");
        scanf ("%d", &row.number_of_hard_disk);
        printf ("Enter capacity_of_hard_disk\n");
        scanf ("%s", &row.capacity_of_hard_disk);
        printf ("Enter  number_of_integrated_controller\n");
        scanf ("%d", &row.number_of_integrated_controller);
        printf ("Enter number_of_outside_device\n");
        scanf ("%d", &row.number_of_outside_device);
        printf ("Enter operational_system\n");
        scanf ("%s\n", &row.operational_system);
        FILE *file;
        file = fopen("KR.txt", "ab");
        fwrite (&row, sizeof(dataRow), 1, file);
        fclose(file);
        //}
    }
    if(number == 2)
    {
        struct dataTable table;
       //struct dataRow row;
        FILE *file;
        //file = fopen("KR.txt", "rb");
        //fread (&row, sizeof(struct dataRow), i, file);
        //struct dataRow Row;
        //printRow(Row);
        printTable(table);
        fclose(file);
    }
    if(number == 3)
    {
    }
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2009, 20:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из бинарного файла (C++):

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

Чтение бинарного файла - C++
Привет! Необходима помощь в таком вопросе - Создал программу для хранения сведений о пользователях(типа такого: введите сведения: ...

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

Чтение из бинарного файла - C++
Здравствуйте. Столкнулся с проблемой, не до конца понимаю от чего она возникает и как решить её. Открываю для чтения файл в бинарном...

Чтение из бинарного файла - C++
Здравствуйте. У меня имеется некий класс Product, объекты которого хранятся в объекте класса Vector. Есть функция записи вектора в бинарный...

Чтение бинарного файла - C++
Здравствуйте. Есть код чтения бинарного файла: FILE *f; string tmp; char buff = {0}; f = fopen(&quot;data.bin&quot;, &quot;rb&quot;); if(f ==...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.04.2009, 02:41 #2
Код
int readInt(FILE* stream)
{
    int showing;

    fread(&showing, sizeof(int), 1, stream);
    return showing;
}
и такую
Код
void writeTable(FILE* stream, struct dataTable table)
{
    int i;
    
    writeInt(stream, table.RowNumber);
    for(i = 0; i < table.RowNumber; i++) {
        writeInt(stream, table.Rows[i].id);
    ...
лучше заменить на такую
Код
void writeTable(FILE *stream, struct dataTable *table)
{
    int i;
    
    writeInt(stream, table->RowNumber);
    for(i = 0; i < table->RowNumber; i++) {
        writeInt(stream, table->Rows[i].id);
    ...
так как при передаче структуры в функцию, будет происходить копирование всего её содержимого каждый раз, а когда передаёшь указатель, то будет передаваться только адрес структуры
то есть если у тебя там 100 подструктур и в них содержатся данные, то у тебя все эти 100 подструктур скопируются, а потом только функция начнёт выполнять своё тело
0
YurA_280784
Заблокирован
07.04.2009, 13:21 #3
kitten у тебя ничего не выходит, т.к. в твоей структуре dataRow есть поля char *. Если хочешь в них что то записать - нужно динамически выделять память для них
dataRow.type_of_processors = (char *)malloc(sizeof(char)*n);
где n число символов
или же просто вбить конкретное число символов типа этого
char type_of_processors[64]; //тип процессоров
и сразу всё получится....
0
kitten
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
07.04.2009, 17:52  [ТС] #4
Вы кажется не совсем поняли мою проблему! В файл у меня записывается, НЕ происходит чтения из файла!что мне с этим делать???
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.04.2009, 00:40 #5
Код
void writeTable(FILE* stream, struct dataTable table)
{
    ...
        writeInt(stream, table.Rows[i].id);
        writeString(stream, table.Rows[i].surname_owner);
вообще, конечно, перед названием table.Rows[i].surname_owner, нужно записать его длину, чтобы потом при чтении выделилась память, а так, процедура выделения нормальная
перед каждой строкой должна быть её длина, так как функция выделения памяти, которая есть , определяет сколько выделять по числу перед строкой
0
YurA_280784
Заблокирован
08.04.2009, 10:58 #6
Я прекрасно понял проблему!!!
Говорю же если пишешь динамикой то со чтением в структуру сложновато, т.к. записи в конечном итоге имеют различную длину, вот более или мене работоспособны код, обрати внимание когда всё фиксированно то и прога не вылетает.
Ошибки в твоём коде,
1. твой файл базы данных в ряде функций не закрывается, но это не сильная ошибка вдруг ты не хочешь чтоб другие проги имели к нему доступ
2. И какже ты хочешь число записей в своей базе подсчитать, а????Ели у тебя даже переменной под твои RowNumber не отведено, я решил єту проблему, тем что в моём варианте у меня записи фиксированной длины и я могу размер файла на размер структуры DataRow поделить вот и выйдет число.
3. в случае сбоя в readTable например указатель в файле застрял твоя addRow может привести к зацикливанию!!!
4. это ж в каком учебнике такое определение длины строки написано????
C++
1
2
int size = readInt(stream);
char* res = new char[size + 1];
У тебя там числа порядка INT_MAX появляются єто меня вообще поразило!!!
5 Писать прототипы функций впереди main() - єто очень плохой стиль программирования, єто в любом учебнике написано,вот
Вообщем kitten, просто учти мои слова в своей проге, а вообще если ты хочешь динамики в строках, то
заведи в своём файле разделители между полями структуры DataRow, к примеру пусть єто символ @ а также между самими структурами например > и тогда можно читать весь файл как текст а в нём искать подстроки >DataRow>, а уже в єтих подстроках искать поля @поле@ и советую завести переменную для общего числа структур DataRow содержащихся в файле, так будет легче віделять память и к томуже в настоящих БД при их повреждении можно получить число повреждённых записей...
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
FILE *file;//лучше сделать глобальной переменной
 
struct dataRow
{
        int id;
        char surname_owner[64];
        int number_of_processors; //число процессоров
        char type_of_processors[64]; //тип процессоров
        int size_memory; //объем памяти
        char type_of_video_controller[64]; //тип видеоконтроллера
        int size_of_video_buffer; //объем видеопамяти
        char type_of_hard_disk[64]; //тип винчестера
        int number_of_hard_disk; //число винчестера
        char capacity_of_hard_disk[64]; //емкость винчестера
        int number_of_integrated_controller; //кол-во интегрированных контроллеров
        int number_of_outside_device; //колво внешних устройств
        char operational_system[64]; //операционная система
        //char str[256];
};
 
struct dataTable
{
    struct dataRow Rows[100];
    int RowNumber;
};
 
void printRow(struct dataRow Row);
void writeInt(FILE* stream, int a);
void writeString(FILE* stream, char *a);
int readInt(FILE* stream);
char* readString(FILE* stream);
void addRow(struct dataRow row, struct dataTable* table);
void readTable(FILE* stream, struct dataTable* table); 
void writeTable(FILE* stream, struct dataTable table);
void printTable(struct dataTable table);
 
void p1();//обработчик 1-го пункта меню
void p2();//обработчик 2-го пункта меню
void p3();//обработчик 3-го пункта меню
 
void main()
{
    printf("\t\tMENU\r\n");
    printf("1 - For adding row print\r\n");
    printf("2 - For showing table print\r\n");
    printf("3 - For searching print\r\n");
    int number;bool bContinue = true;
    scanf("%d", &number);
    switch(number)
    {
    case 1:
        p1();
        break;
    case 2:
        p2();
        break;
    case 3:
        p3();
        break;
    default :
        bContinue = false;
        break;
    }
    if(bContinue)
        main();
}
 
void p1()
{
    
    struct dataRow row;
    printf ("Enter id (int)\n");                
    scanf ("%d", &row.id);
    
    printf ("Enter surname_owner (string)\n");  
    scanf ("%s", &row.surname_owner);
    
    printf ("Enter number_of_processors (int)\n");
    scanf ("%d", &row.number_of_processors);
        
    printf ("Enter type_of_processors (string)\n");     
    scanf ("%s", &row.type_of_processors);
    
    printf ("Enter size_memory (int)\n");
    scanf ("%d", &row.size_memory);
        
    printf ("Enter type_of_video_controller (string)\n");
    scanf ("%s", &row.type_of_video_controller);
        
    printf ("Enter size_of_video_buffer (int)\n");
    scanf ("%d", &row.size_of_video_buffer);
     
    printf ("Enter type_of_hard_disk (string)\n");
    scanf ("%s", &row.type_of_hard_disk);
        
    printf ("Enter number_of_hard_disk (int)\n");
    scanf ("%d", &row.number_of_hard_disk);
        
    printf ("Enter capacity_of_hard_disk (string)\n"); 
    scanf ("%s", &row.capacity_of_hard_disk);
       
    printf ("Enter  number_of_integrated_controller (int)\n");
    scanf ("%d", &row.number_of_integrated_controller);
    
    printf ("Enter number_of_outside_device (int)\n");
    scanf ("%d", &row.number_of_outside_device);
    
    printf ("Enter operational_system (string)\n");
    scanf ("%s", &row.operational_system);
        
    if( (file = fopen("KR.txt", "wb+")) )
    {
        fwrite (&row, 1, sizeof(dataRow), file);
        fclose(file);
        printf("KR.txt yspeshno sozdan\r\n");
    }
    else
        printf("Oshibka sozdaniya KR.txt\r\n");
}
 
void p2()
{
    struct dataTable table;int i;
    if( (file = fopen("KR.txt", "rb+")) )
    {
        readTable(file, &table);
        fclose(file);
        for(i = 0; i < table.RowNumber; i++)
            printRow(table.Rows[i]);
    }
    else
        printf("Oshibka chteniya KR.txt\r\n");
}
 
void p3()
{
    //
}
 
void printRow(struct dataRow Row)
{
    printf("%d %s %d %s %d %s %d %s %d %s %d %d %s\n", 
        Row.id, Row.surname_owner, 
        Row.number_of_processors, 
        Row.type_of_processors, 
        Row.size_memory, 
        Row.type_of_video_controller, 
        Row.size_of_video_buffer, 
        Row.type_of_hard_disk, 
        Row.number_of_hard_disk, 
        Row.capacity_of_hard_disk, 
        Row.number_of_integrated_controller, 
        Row.number_of_outside_device, 
        Row.operational_system);
}
 
void writeInt(FILE* stream, int a)
{
    fwrite(&a, sizeof(int), 1,stream);
}
 
void writeString(FILE* stream, char *a)
{
    writeInt(stream, (int)strlen(a));
    fwrite(a, strlen(a), 1, stream);
}
 
int readInt(FILE* stream)
{
    int showing;
    fread(&showing, sizeof(int), 1, stream);
    return showing;
}
 
char* readString(FILE* stream)
{
//  int size = readInt(stream);
 //   char* res = new char[size + 1];
    char res[64];
    fread((void *)res, 1, 64, stream);
    return res;
}
 
void addRow(struct dataRow row, struct dataTable* table)
{
    table->Rows[table->RowNumber - 1] = row;
    //table->RowNumber++;
}
 
void readTable(FILE* stream, struct dataTable* table)
{
    int k=0;
    struct dataRow row;
    fseek(file,0,SEEK_END);
    table->RowNumber = ftell(file)/sizeof(row);
    fseek(file,0,SEEK_SET);
    for(int i=0; i < table->RowNumber; i++)
    {
        row.id                   = readInt(stream);   //int
        strcpy(row.surname_owner,readString(stream));//string
        row.number_of_processors = readInt(stream);   //int
        strcpy(row.type_of_processors,readString(stream));//string
        row.size_memory          = readInt(stream);   //int
        strcpy(row.type_of_video_controller,readString(stream));//string
        row.size_of_video_buffer = readInt(stream);   //int
        strcpy(row.type_of_hard_disk,readString(stream));//string
        row.number_of_hard_disk  = readInt(stream);   //int
        strcpy(row.capacity_of_hard_disk,readString(stream));//string
        row.number_of_integrated_controller = readInt(stream);//int
        row.number_of_outside_device = readInt(stream);//int
        strcpy(row.operational_system,readString(stream));//string
        addRow(row, table);
    }
}
 
void writeTable(FILE* stream, struct dataTable table)
{
    writeInt(stream, table.RowNumber);
    for(int i = 0; i < table.RowNumber; i++)
    {
        writeInt(stream,    table.Rows[i].id);
        writeString(stream, table.Rows[i].surname_owner);
        writeInt(stream,    table.Rows[i].number_of_processors);
        writeString(stream, table.Rows[i].type_of_processors);
        writeInt(stream,    table.Rows[i].size_memory);
        writeString(stream, table.Rows[i].type_of_video_controller);
        writeInt(stream,    table.Rows[i].size_of_video_buffer);
        writeString(stream, table.Rows[i].type_of_hard_disk);
        writeInt(stream,    table.Rows[i].number_of_hard_disk);
        writeString(stream, table.Rows[i].capacity_of_hard_disk);
        writeInt(stream,    table.Rows[i].number_of_integrated_controller);
        writeInt(stream,    table.Rows[i].number_of_outside_device);
        writeString(stream, table.Rows[i].operational_system);
    }
}
 
void printTable(struct dataTable table)
{
    if( (file = fopen("KR.txt", "rb")) )
    {
        for(int i = 0; i != feof(file); i++)
        {
            struct dataTable table;
            struct dataRow row;
            fread (&row, 1,sizeof(struct dataRow), file);
            printRow(table.Rows[i]);
        }
        fclose(file);
    }
    else
        printf("Oshibka otkritiya KR.txt");
}
1
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.04.2009, 00:48 #7
YurA_280784,
5 Писать прототипы функций впереди main() - єто очень плохой стиль программирования, єто в любом учебнике написано,вот
прототип - это объявление функции в новом стиле (то есть это объявление, которое содержит и количество аргументов и их типы), при вызове функции аргументы приводятся к типам из прототипа
объявление в старом стиле - f();
объявление в новом стиле (89) - f(int, int);
они тип void ввели из-за этого, что нужно было пустой список аргументов как-то подчеркнуть (что это не объявление в старом стиле, а именно прототип) - f(void);
а стиль - конечно, такие полотна рано или поздно всё равно нужно разносить по файлам, и удобнее это делать когда есть и функции отдельно (определения) и объявления отдельно, тогда леко функции в файлы .c или .cpp, объявления в файлы .h
0
YurA_280784
Заблокирован
09.04.2009, 09:34 #8
Да да да заголовок функции общибся(не прототип, молодец accept)...

заголовки

майн

прототипы
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.04.2009, 10:56 #9
там просто бывает ещё определение в разных стилях, от этого зависит что будет при вызове с аргументами (неявные приведения типов)

главное, что прототип - объявление в новом стиле, когда типы всех параметров функции указываются обязательно (имена можно не указывать) и когда параметров нет void ставится обязательно (от этого меняется процесс при вызове функции, если там void не поставить, объявление будет считаться в старом стиле и из-за этого аргументы в вызове будут расширяться до int и до double), а когда записано в новом стиле (все типы указаны), то аргументы будут приводиться к типам из объявления

а потом эти аргументы, уже преобразованные, будут сравниваться с аргументами из определения функции (оно тоже бывает в старом и новом стиле), старый стиль - это когда типы параметров описываются после круглых скобок до фигурных
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2009, 10:56
Привет! Вот еще темы с ответами:

Чтение бинарного файла - C++
Добрый Добавлено через 6 минут Добрый день. Не получается прочитать бин. файл. Суть какая: есть файл, в котором записаны дубл...

Чтение из бинарного файла - C++
Всем приветы. Подскажите или помогите, пожалста. Есть вот такая штука: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Чтение бинарного файла - C++
Помогите, пожалуйста, научите, как правильно читать файлы! Есть бинарный файл. В нем хранятся шеснадцатиричные числа. (по 40 чисел в...

Чтение из бинарного файла - C++
Уважаемые форумчане! Прошу помочь мне с чтением из бинарного файла. Проблема следующая. Есть функция, которая пишет в бинарный файл -...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.04.2009, 10:56
Ответ Создать тему
Опции темы

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