sscanf 第一个参数问题
void CwuziqiView::OnOpen()
{
// TODO: 在此添加命令处理程序代码
CFileDialog dlg(TRUE,_T("wzq"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("(*.WZQ)|*.wzq|All Files|*.*||"),this);
if(dlg.DoModal()==IDOK)
dlg.GetFileName();
else
return;
CString str;
int i,j,m;
CStdioFile file;
if(file.Open(dlg.GetFileName(),CFile::modeRead)==0)
{
AfxMessageBox(_T("save error!"));
return;
}
CArchive ar(&file,CArchive::load);
for(i=0;i<19;i++)
for(j=0;j<19;j++)
{
ar.ReadString(str);
sscanf((char*)str.GetBuffer(),"%d",&m); //疑问
if(m==-1)
wzq[i][j]=-1;
if(m==0)
wzq[i][j]=0;
if(m==1)
wzq[i][j]=1;
}
ar.ReadString(str);
sscanf((char*)str.GetBuffer(),"%d",&m);
if(m==1)
colorwhite=TRUE;
else
colorwhite=FALSE;
file.Close();
ar.Close();
Invalidate(FALSE);
}
这是一个五子棋游戏,打开存档的代码,
保存时是按数字保存的
通过file.WriteString(_T("-1\n")); file.WriteString(_T("0\n")); file.WriteString(_T("1\n"));
sscanf((char*)str.GetBuffer(),"%d",&m); 问题一定在这里 不过不知道怎么正确的处理第一个参数,
我这样写的结果是,棋盘上的数据全部被转换成棋盘上的第一个数据。
不知道如何处理第一个参数 希望前辈们说说你们的经验