C++读写二进制文件问题

voidGameLoginView::SetUserData(){UserDatathePlayer;memset(&thePlayer,0,sizeof(thePlay... void GameLoginView::SetUserData()
{
UserData thePlayer;
memset(&thePlayer, 0, sizeof(thePlayer));
FILE * fout;
fout = std::fopen("d:\\CityCode\\client_src_dx\\DXGameLobby\\bin\\a.dat", "ab+");
SexyString aString = m_pEditUserName->mString;

wchar_t str[16];
int i;
for( i=0;i<aString.length();i++)
str[i] = aString[i];
str[i] = '\0';

memcpy(thePlayer.name, str, sizeof(thePlayer.name));

std::fwrite(&thePlayer, sizeof(thePlayer), 1, fout);
std::fprintf(fout, "%d", thePlayer);
std::fclose(fout);

}

void GameLoginView::GetUserData()
{
FILE * fin;
UserData thePlayer[5];
ListItem *theItem[5];
memset(&thePlayer, 0, sizeof(thePlayer));
fin = std::fopen("d:\\CityCode\\client_src_dx\\DXGameLobby\\bin\\a.dat", "rb");

if(fin == NULL)
{
return ;
}

std::fread(&thePlayer[0], sizeof(thePlayer), 1, fin);

for(int i=0;i<5;i++)
{
if (thePlayer[i].name[0])
{
theItem[i] = new ListItem(thePlayer[i].name);
m_pUserList->AddBar(theItem[i], i);
m_pEditUserName->SetText(thePlayer[i].name);
}
}

std::fclose(fin);
}

先SetUserData()了一个结构体内容,为什么读出了1个结构体内容和一行乱码?
再SetUserData()添加新结构体内容,除了第一个添加的其他读出的都是乱码。

很少用到读写流,请大神讲解下原理!谢谢啦!
展开
 我来答
扈怀炜4h
2015-09-07 · TA获得超过6039个赞
知道大有可为答主
回答量:6907
采纳率:67%
帮助的人:1340万
展开全部
你的那个文件是用windows上的记事本写的吧,那个记事本不能处理utf8代码,你用其他的软件写一下,比如 ultraedit
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式