关于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里面被写入许多
二进制字符
...全文
203 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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 没赋值,乱码可能是这里的
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-20 11:26
社区公告
暂无公告