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

Сохранение/загрузка структуры - C++

Восстановить пароль Регистрация
 
MaNext
3 / 3 / 0
Регистрация: 26.09.2012
Сообщений: 39
13.06.2014, 21:17     Сохранение/загрузка структуры #1
Всем привет!

Подскажите, что я делаю не так и где ошибки? Глаза уже все замылил, не могу нормально сохранить/открыть.
По факту, необходимо сохранить только массив точек, которые я проставил на канве и их количество.
Может имеются у кого другие варианты решения?
Спасибо!

Структуры:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct MyPoint
       {
     float x;
     float y;
     float z;
       };
struct MyProhod
       {
       MyPoint t1;
       };
struct Zapis
       {
       MyProhod mas_p[20];
       int k_pix;
       }fileResult;
Переменные:
C++
1
2
3
MyProhod mas_pointer[20];
Zapis mas_zapis[1];
int kolpixel; // количество моих точек на канве
Сохраняю:
C++
1
2
3
4
5
6
FILE *fp;
       if(fp=fopen("c://1.txt" , "w+")){
       for (int i = 0; i < kolpixel; i++)
        fwrite(&mas_zapis[0].mas_p[i], sizeof(fileResult),kolpixel,fp);
       fclose(fp);
       }
Загружаю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
FILE *fil;
if (fil = fopen("c://1.txt","rt")) {
  while (!feof(fil)){
        fread(&mas_zapis[0].mas_p[i], sizeof(fileResult),1,fil);
 
        kolpixel=mas_zapis[0].k_pix;
                for (i = 0; i < kolpixel; i++) {
           mas_pointer[i] = mas_zapis[0].mas_p[i];
        }   
        }
}
fclose(fil);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 21:17     Сохранение/загрузка структуры
Посмотрите здесь:

C++ загрузка массива и сохранение результата в файл
C++ сохранение структуры в файл
Сохранение структуры в файл C++
C++ Сохранение-Загрузка игры
Сохранение и загрузка в бинарный файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 21:33     Сохранение/загрузка структуры #2
Вот это непонятно что:
C++
1
fwrite(&mas_zapis[0].mas_p[i], sizeof(fileResult),kolpixel,fp);
mas_p[i] это объект MyProhod, почему тогда sizeof(fileResult)?
MaNext
3 / 3 / 0
Регистрация: 26.09.2012
Сообщений: 39
14.06.2014, 17:48  [ТС]     Сохранение/загрузка структуры #3
alsav22, смотрел примеры с простор интернета. Я так понимаю в fileresult содержится общая структура?! Как правильнее?Я не понимаю. Может так?

C++
1
fwrite(&mas_zapis[0].mas_p[i], sizeof(mas_zapis[0]),kolpixel,fp);
Добавлено через 14 часов 51 минуту
Кое-что переделал. Файл сохраняет и открывает. После все точки отрисовывает обратно, но возникает ошибка после окончания процесса:
"Access violation at adress 005362D0 in module...Read of adress 023C34B0"

Переделал так:
Структура:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct MyPoint
       {
     float x;
     float y;
     float z;
       };
struct MyProhod
       {
       MyPoint t1;
       };
struct Zapis
       {
       MyProhod mas_p[20];
       int k_pix;
       }mas_zapis[1];
Переменные:
C++
1
2
3
MyProhod mas_pointer[20];
MyProhod mas_pointer2[20];
int kolpixel; // количество моих точек на канве
Сохраняю
C++
1
2
3
4
5
6
7
8
9
10
11
12
FILE *fp;
 
if((fp=fopen("c://1.bin", "wb"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    return;
  }
 
  for (int i = 0; i < 20; i++){
       if(fwrite(&mas_zapis[i], sizeof(struct Zapis), 1, fp)!=1)
       printf("Ошибка при записи файла.\n");
         }
       fclose(fp);
Загружаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
FILE *fil;
  if((fil=fopen("c://1.bin", "rb"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    return;
  }
 
  for(i=0; i<20; i++){
    if(fread(&mas_zapis[i],sizeof(struct Zapis), 1, fil)!=1) {if(feof(fil)) break;
         printf("Ошибка при чтении файла.\n");
    }
}
fclose(fil);
kolpixel = mas_zapis[0].k_pix;
for (i = 0; i < 20; i++) {
mas_pointer[i] = mas_zapis[0].mas_p[i];
mas_pointer2[i] = mas_zapis[0].mas_p[i];
}
paint_PB1();
paint_PB2();
paint_PB3();
paint_PB4();
sedoi_starik
1 / 1 / 0
Регистрация: 13.06.2013
Сообщений: 35
15.06.2014, 00:29     Сохранение/загрузка структуры #4
Вот я так делаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void save(Vehicle_Database *pDB){
    FILE * pFile;
    pFile = fopen("myfile.bin" , "wb");
    for(int i =0;i<SIZE;i++)
        fwrite(&pDB[i], sizeof(pDB), 100, pFile);
    fclose (pFile);
}
 
void open(Vehicle_Database *pDB){
    FILE *FH = NULL;
    FH = fopen("myfile.bin", "rb");
    if(FH==NULL) cout<<"Файл не найден";
    for(int i=0; i<100; i++){
        fread(&pDB[i], sizeof(pDB), 100, FH);
    }
    fclose(FH);
}
MaNext
3 / 3 / 0
Регистрация: 26.09.2012
Сообщений: 39
15.06.2014, 16:33  [ТС]     Сохранение/загрузка структуры #5
sedoi_starik,
C++
1
fread(&pDB[i], sizeof(pDB), 100, FH);
100 - это количество записей в базе?
Yandex
Объявления
15.06.2014, 16:33     Сохранение/загрузка структуры
Ответ Создать тему
Опции темы

Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru