[問題] fread讀出亂碼

看板C_and_CPP (C/C++)作者 (楓霧)時間15年前 (2011/02/02 11:42), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
各位前輩好 最近在寫程式遇到一個問題 因為要儲存的東西很多 想說fwrite、fread使用很方便 只要一行就可以把東西全部存完 但是使用後發現會產生亂碼 下面是我要儲存的東西 不知道怎麼解決 還是有更好的其他儲存方法 謝謝各位前輩 要儲存的東西: struct NUM { int NumBus; int NumRowBus; int NumLine; int NumRowLine; }; struct BUSDATA { char Name[30]; int Code; int Type; double Vnorm; double Vsch; double Asch; int DelFlag; }; struct LINEDATA { char Name[30]; int Code; int From; int To; int Len; int DelFlag; } struct DATA { vector<BUSDATA> VecBus; vector<LINEDATA> VecLine; NUM Num; }; DATA *data; 儲存: FILE *fsavePtr; if((fsavePtr = fopen(FilePath.c_str(),"wb"))==NULL) { StatusBar->SimpleText = " 儲存檔案失敗"; DispTimer->Enabled = true; } else { fwrite(data,sizeof(struct DATA),1,fsavePtr); fclose(fsavePtr); StatusBar->SimpleText = " 儲存檔案成功"; DispTimer->Enabled = true; } 讀取: FILE *floadPtr; if((floadPtr = fopen(FilePath.c_str(),"rb"))==NULL) { StatusBar->SimpleText = " 開啟檔案失敗"; DispTimer->Enabled = true; } else { data = (DATA *)malloc(sizeof(struct DATA)*1); fread(data,sizeof(struct DATA),1,floadPtr); fclose(floadPtr); StatusBar->SimpleText = " 開啟檔案成功"; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.21.226

02/02 12:10, , 1F
vector 的資料是另外存在 heap 上, DATA 裡面只有 pointer
02/02 12:10, 1F

02/02 12:11, , 2F
要存要自己跑遍整個 vector 一一寫入
02/02 12:11, 2F

02/02 14:06, , 3F
vector的資料我是用push_back存入 另外的heap我就不懂了?
02/02 14:06, 3F

02/02 14:21, , 4F
感謝前輩提醒 現在才注意到vector的記憶體分配有問題
02/02 14:21, 4F

02/02 15:23, , 5F
都用到.NET了 就用System::IO裡面的東西吧
02/02 15:23, 5F
文章代碼(AID): #1DIDAu2m (C_and_CPP)
文章代碼(AID): #1DIDAu2m (C_and_CPP)