С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
4 / 4 / 0
Регистрация: 26.09.2012
Сообщений: 39
1

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

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

Author24 — интернет-сервис помощи студентам
Всем привет!

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

Структуры:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2014, 21:17
Ответы с готовыми решениями:

Сохранение структуры в файл
объясните как после создания структуры и введения с клавиатуры её элементов , сохранить вводимую...

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

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

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

4
5499 / 4894 / 831
Регистрация: 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
4 / 4 / 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
1 / 1 / 2
Регистрация: 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
4 / 4 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2014, 16:33
Помогаю со студенческими работами здесь

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru