64,642
社区成员
发帖
与我相关
我的任务
分享
struct GameInfo
{
int GameKind;
std::string GameName;
};
// 这是写进文件的代码
int gameType = iter->first;//这个和下面那一句都是没有问题的数据
GameInfo info = iter->second;
const int bufSize = sizeof(int) + sizeof(GameInfo);
char *p = new char[bufSize];
memcpy(p,&gameType,sizeof(int));
memcpy(p+sizeof(int),&info,sizeof(GameInfo));
fwrite(p,bufSize,1,fp);
//接下来是读取的代码
// 强制转换是不会出问题的,这段代码是没有错的
const int bufSize = sizeof(int) + sizeof(GameInfo);
char *p = new char[bufSize];
ZeroMemory(p,bufSize);
fread(p,bufSize,1,fp);
gameType = (int)*p;
gameinfo = *(GameInfo *)(p+sizeof(int));
//用了memcpy之后会出现标题中的问题
const int bufSize = sizeof(int) + sizeof(GameInfo);
char *p = new char[bufSize];
ZeroMemory(p,bufSize);
fread(p,bufSize,1,fp);
memcpy(&gameType,p,sizeof(int));
memcpy(&gameinfo,p+sizeof(int),sizeof(GameInfo));
//另外一种读取的方法
const int bufSize = sizeof(int) + sizeof(GameInfo);
fread(&gameType,sizeof(int),1,fp);//不知道这里为什么返回值不是sizeof(int)
fread(&gameinfo,sizeof(GameInfo),1,fp);//数据可以读入,调试的时候看出来数据时正确的,但是执行完之后就出错了while(feof(fp)==0)循环结束后,一样是标题上的错误