关于fprintf的问题,为什么这样使用fprintf会出现输出二进制字符的现象?
在一个类里面,写入如下函数:
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里面被写入许多
二进制字符