作者maplefog (楓霧)
看板C_and_CPP
標題[問題] fread讀出亂碼
時間Wed Feb 2 11:42:45 2011
各位前輩好
最近在寫程式遇到一個問題
因為要儲存的東西很多
想說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