关于fprintf的问题,为什么这样使用fprintf会出现输出二进制字符的现象?

AMITUOFO 2005-08-20 11:26:27
在一个类里面,写入如下函数:

class CMakeNaviMode: public CWnd
{
public:
CMakeNaviMode();
FILE *fstream;
DoFileOperation(CString flag)
....................
}

void CMakeNaviMode::DoFileOperation(CString flag)
{
if (flag = "open")
{
fstream = fopen("test.cpp", "w");
fprintf(fstream, "t, callsign, state\n");
}
else
{
fclose(fstream);
}
}
void CMakeNaviMode::Main_ShowUntalkPlan(int nstep)
{
int i;
TRACE("STEP:: %d\n", nstep);
m_nstep = nstep;

for (i = 0; i < m_nTotalShipNow; i++)
{

fprintf(fstream, "%d, %d, %s\n", m_nstep, m_ncallsign_ownsp, str);
TRACE("STEP:: %d, ntest: %d\n", nstep, ntest);
}//i end
//TRACE("\n");

}


在VIEW类里面调用
void CViewScenario::DoSimulation_UntalkNavigation(vector<SHIPVECTOR> allsp)
{
CMultiModeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

pDoc->m_clsMkNaviMode.DoFileOperation("open");
for (step = 0; step < pDoc->m_nttlsteps; step++)
{
pDoc->m_clsMkNaviMode.Main_ShowUntalkPlan(step);
}

pDoc->m_clsMkNaviMode.DoFileOperation("close");
}

结果发现test.cpp里面被写入许多
二进制字符
...全文
393 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tufaqing 2005-08-22
  • 打赏
  • 举报
回复
??????????????? if (flag = "open") ????????????????
改为 if(flag == "open")
AMITUOFO 2005-08-20
  • 打赏
  • 举报
回复
我上面省略了str的付值码,str本身没错,文件里被输入了好多000102....之类的二进制码
Yofoo 2005-08-20
  • 打赏
  • 举报
回复
Main_ShowUntalkPlan 中的
fprintf(fstream, "%d, %d, %s\n", m_nstep, m_ncallsign_ownsp, str);
里面的str 没赋值,乱码可能是这里的

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧