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

Как правильно сохранить и потом считать структуру в бинарный файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с указателями http://www.cyberforum.ru/cpp-beginners/thread295809.html
есть класс, в этом классе есть поля - указатели на структуры. я с помощью метода устанавливаю этим указателям значения, потом делаю чтение.запись данных в консоли (cin\cout). адреса, на которые...
C++ Можно ли установить указатель на конец файла, не подсчитывая его размер? можно ли как нибудь уствновить указатель автоматически на конец файла не подсчитывая его размер. например я делаю так SetFilePointer(myfile, sizeof "мои данные", NULL, FILE_BEGIN); "мои... http://www.cyberforum.ru/cpp-beginners/thread295803.html
C++ Работа с Бинарными файлами
Помогите сделать сохранение не могу разобраться :( Почему в этом коде #include <iostream> #include <iomanip> #include <windows.h> #include <math.h> #include <stdio.h> #include <time.h>...
Разбение строки, на строки по 3 символа C++
Есть строка, достоверно известно, что количество символов в строке кратно 3. Какой функцией можно разбить строку, на строки по 3 символа ? Точное количество символов исходной строки не известно...
C++ strcmp в функции ...(про поезда) http://www.cyberforum.ru/cpp-beginners/thread295791.html
Вывод на экран поездов отправляющихся после введённого с клавиатуры времени... Сообственно подводит if в 94 строке который выводит не всю информацию...он выводит только один рейс после введённого...
C++ В массиве хранится 20 значений забега, вывести на экран 3 лучших результата забега. В массиве хранится 20 значений забега, вывести на экран 3 лучших результата забега. Может кто-то скинуть код программы_ желательно с каментами подробнее

Показать сообщение отдельно
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
15.05.2011, 13:39
dampir_sanek, неправильно, передавать надо адрес переменной. Другое дело, что нет смысла записывать эту переменную в файл.

+++++++++++++++++++++++++++++++++++
Надо так

C++
1
2
3
4
5
6
7
//Запихиваем размер
fwrite(&CPU.size, sizeof(CPU.size), 1, fl);
//Запихиваем массив lear
fwrite(CPU.lear, sizeof(char)*CPU.size, 1, fl);
//Запихиваем массив name
fwrite(CPU.name, sizeof(int)*CPU.size, 1, fl);
fclose(fl);
Только прежде необходимо правильно инициализировать всё это дело, в чём я сильно сомневаюсь!
Я сделал так:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
 
struct card
{
        int size;
        char *lear;
        int *name;
};  
 
int main(){
srand (time(0));
 
 
//Заполняем
card CPU;
CPU.size=6;
CPU.lear= new char[CPU.size];
CPU.name= new int[CPU.size];
for(int i=0; i<CPU.size; i++){
        CPU.lear[i]= i;
        CPU.name[i]= rand()%4;
}
 
//ПРоверим, чё у нас получилось:
printf ("CPU.size= %d\n", CPU.size);           
printf ("CPU.lear= %x\n", CPU.lear);           
printf ("CPU.name= %x\n", CPU.name);           
for(int i=0; i<CPU.size; i++){
  printf ("CPU.lear[%d]= %d   ",i, CPU.lear[i]);
  printf ("CPU.name[%d]= %d\n",i,  CPU.name[i]);
}
 
//Перегоним в файл
FILE *fl;
fl= fopen("qqq.txt", "wb");
printf ("sizeof(card)= %d\n",sizeof(card));
 
//Запихиваем размер
fwrite(&CPU.size, sizeof(CPU.size), 1, fl);
//Запихиваем массив lear
fwrite(CPU.lear, sizeof(char)*CPU.size, 1, fl);
//Запихиваем массив lear
fwrite(CPU.name, sizeof(int)*CPU.size, 1, fl);
fclose(fl);
 
delete [] CPU.lear;
delete [] CPU.name;
 
 getchar ();
 return 0;
}
И последнее: тыкая в файл qqq.txt, автор ничё там не увидит. Хотя оно там будет. Но это так, на всякий случай.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru