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

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

Войти
Регистрация
Восстановить пароль
 
MaNext
3 / 3 / 0
Регистрация: 26.09.2012
Сообщений: 39
#1

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

13.06.2014, 21:17. Просмотров 357. Ответов 4
Метки нет (Все метки)

Всем привет!

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

Структуры:
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);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 21:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сохранение/загрузка структуры (C++):

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

Сохранение структуры в файл - C++
Подскажите если дана структура из трех полей как сохранить ее в файл и загрузить обратно из файла на дисплей. Хотя бы ссылку на что нибудь...

Сохранение-Загрузка игры - C++
Всем доброго времени суток, слёзно прошу помощи, не получается реализовать сохранение и загрузку игры. Имеется класс CGame который...

Редактирование и сохранение структуры <vector> - C++
Доброго времени суток, не могу ума приложить, как реализовать функцию для редактирования данных в &lt;vector&gt; с последующим занесением в нее. ...

Загрузка структуры из файла - C++
Объясните, пожалуйста, как произвести загрузку чисел вещественного типа из файла в структуру. Текст файла выглядит так: и вот сам...

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

4
alsav22
5428 / 4823 / 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)?
0
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();
0
sedoi_starik
1 / 1 / 0
Регистрация: 13.06.2013
Сообщений: 41
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);
}
0
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 - это количество записей в базе?
0
15.06.2014, 16:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2014, 16:33
Привет! Вот еще темы с ответами:

Сохранение и загрузка данных в файл - C++
Добрый вечер всем. Столкнулся с какой-то элементарной проблемой, и не могу никак понять в чем траблы. Вот код: ... int main() ...

Сохранение и загрузка в бинарный файл - C++
Доброго времени суток. Прошу помочь с сохранением/загрузкой в/из файла. Есть два класса: CClient: class CClient { ...

INI - Загрузка и сохранение настроек - C++
Добрый день. Подскажите пожалуйста. Существует ли какой либо класс в C++ в Visual Studio для &quot;INI - Загрузка и сохранение настроек&quot;...

Загрузка массива и сохранение результата в файл - C++
Привет,написал прогу, и вней требовалось загрузить элементы массива из файла и после нахождения нужных значений сохранить результат в файл....


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

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

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