Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись\чтение структуры в файл 
:(
    Опции темы
Fantaz1
Дата 23.1.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



Пишу курсовой проект, надо реализовать работу с базами данных. 
Все функции что должны быть в программе почти зделал, но вот вроде несложная задача завела в тупик..
Надо чтоб при нажатии кнопки , она же Save, все структуры занеслись в файл. И потом при нажатии Load все данные занеслись назад в структуры.

Есть структура
Код

struct DataBase
{
    CString sportsman;
    CString kind_of_sport;
    int points;
    int nomer;
};

В программе использую массив структур 
DataBase sports[20];

функция сохранения 
Код

void CKyrs_DialDlg::OnSave() 
{

    FILE *save;
    save=fopen("fail.txt","w");
    fwrite(&sports[20],sizeof(DataBase),20,save);
    fclose(save);
}


загрузки
Код

void CKyrs_DialDlg::OnLoad() 
{
    DataBase savestruct[20];

    FILE *save;
    save = fopen("fail.txt","r");
    
    fread(&savestruct[20],sizeof(DataBase),20,save);
    fclose(save);
    

}

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


Это сообщение отредактировал(а) Fantaz1 - 23.1.2009, 19:26
PM MAIL   Вверх
SenkraD
Дата 23.1.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



Fantaz1, класс CString использует динамическую память потому твой способ не проходит!!!
Если ты уже используеш MFC, то смотри в сторону CArchive или как-то так или посмотри здесь или здесь


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
voov
Дата 24.1.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



SenkraD, +1. 
При сохранении строки нужно учитывать ее длину, а ты, Fantaz1, сохранил указатель на строку без ее содержимого. И что ты хочешь получить при загрузке?
Как тебе уже советовал SenkraD, ищи темы по сериализации и CArchive.
PM MAIL   Вверх
Rififi
Дата 24.1.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 2
Всего: 36



Fantaz1, 
выражение &sports[20] указывает как раз на мусор, начинающийся после  последнего элемента в массиве sports
PM MAIL   Вверх
Verus
Дата 1.2.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

Репутация: нет
Всего: нет



Почитай про сериализацию. Если интересно где-то был у меня код как раз с этим.

Это сообщение отредактировал(а) Verus - 1.2.2009, 15:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.