Siema, mam pewną strukturę i do tej pory zapisywało się wszystko idealnie, ale gdy dodałem do niej 1 pole to oczywiście wszystko się wali i program się wywala. Patrzę i patrzę na ten kod i nie umiem zrozumieć błędu:
typedef struct{
std::string temp_slonce, temp_cien,prawd_opady,pred_wiatru,stan;
} Pogoda;
typedef struct{
double fizyczny,intelektualny,emocjonalny;
} Biorytm;
typedef struct{
std::string username,password,znak_zodiaku,miasto,horoskop,sciezka_profilu;
int dzien_urodznia, miesiac_urodzenia, rok_urodzenia;
Pogoda pogoda;
Biorytm biorytm;
} Profil;
sciezka_profilu to pole, które dodałem, funkcja zapisująca:
int ZapiszProfil(Profil* profil)
{
char* temp;
int temp_i;
temp = (char*)gtk_entry_get_text(GTK_ENTRY(EntryBoxes[0]));
profil->username = temp;
temp = (char*)gtk_entry_get_text(GTK_ENTRY(EntryBoxes[1]));
profil->password = temp;
temp = (char*)gtk_entry_get_text(GTK_ENTRY(EntryBoxes[2]));
profil->miasto = temp;
temp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(ComboBoxes[0]));
temp_i = atoi(temp);
profil->dzien_urodznia = temp_i;
temp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(ComboBoxes[1]));
temp_i = atoi(temp);
profil->miesiac_urodzenia = temp_i;
temp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(ComboBoxes[2]));
temp_i = atoi(temp);
profil->rok_urodzenia = temp_i;
temp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
profil->znak_zodiaku = temp;
g_free(temp);
std::ofstream do_pliku;
std::string nazwa_pliku = "Profiles/";
nazwa_pliku+= profil->username;
nazwa_pliku +=".profil";
// profil->sciezka_profilu = nazwa_pliku.c_str(); <-- bez tego działa dobrze gdy to odkomentuje to się wywala wszystko
do_pliku.open(nazwa_pliku.c_str(),std::ofstream::binary | std::ofstream::trunc);
if (do_pliku.fail()) return -1;
do_pliku.write((char*)profil,sizeof(Profil));
if (do_pliku.bad()) return -2;
do_pliku.close();
if (do_pliku.fail()) return -3;
do_pliku.close();
return 0;
}