看板 C_and_CPP 關於我們 聯絡資訊
各位前輩好 最近在寫程式遇到一個問題 因為要儲存的東西很多 想說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
scwg:vector 的資料是另外存在 heap 上, DATA 裡面只有 pointer 02/02 12:10
scwg:要存要自己跑遍整個 vector 一一寫入 02/02 12:11
maplefog:vector的資料我是用push_back存入 另外的heap我就不懂了? 02/02 14:06
maplefog:感謝前輩提醒 現在才注意到vector的記憶體分配有問題 02/02 14:21
james732:都用到.NET了 就用System::IO裡面的東西吧 02/02 15:23