非常奇怪的文件读取问题
这个问题困扰我半天了,请大家帮助我看看是什么问题。
void saveData()
{
using namespace std;
//保存列宽
int array[32]={0};
int finishHeader[32]={0};
for(int i=0;i<32;i++)
{
finishHeader[i]=i*2;
array[i]=i;
}
//计算校验码
int check=0;
char* c=(char*)&array;
for(int i=0;i<sizeof(array);i++)
{
check+=*c;
c++;
}
fstream ofs;
ofs.open("./finishColwidth.dat",ios::trunc|ios::out);
ofs.write((char*)&check,sizeof(check));
ofs.write((char*)(finishHeader),sizeof(finishHeader));
ofs.write((char*)&array,sizeof(array));
ofs.close();
}
void loadData
{
using namespace std;
ifstream ifs;
ifs.open("./finishColwidth.dat",ios::in);
int checkFromFile=0;
ifs.read((char*)&checkFromFile,sizeof(checkFromFile));
int array[32]={0};
int finishHeader[32];
ifs.read((unsigned char*)(finishHeader),sizeof(finishHeader));
//int abc[11];
//ifs.read((char*)abc,sizeof(abc));
//ifs.read((unsigned char*)&array,sizeof(array));
for(int i=0;i<32;i++)
{
ifs.read((char*)(&array[i]),sizeof(array[i]));
}
unsigned int abb=(unsigned int)&array;
ifs.close();
int checkFromCal=0;
char* c=(char*)array;
for(int i=0;i<sizeof(array);i++)
{
checkFromCal+=*c;
c++;
}
//如果校验正确,那就读取主文件中的列宽数据
if(checkFromFile==checkFromCal &&checkFromCal!=0)
{
for(int i=0;i<32;i++)
ShowMessage(array[i]);
}
}