代码如下:
CStdioFile csf;//写文件
CString m_disp;
if(csf.Open ("E://test//log.txt",/*CFile::modeCreate|CFile::modeNoTruncate|*/CFile::modeReadWrite|CFile::typeText)==NULL)
{
AfxMessageBox("建立文件失败");
return;
} csf.SeekToBegin();
csf.Read(m_disp.GetBufferSetLength(csf.GetLength()),csf.GetLength());
csf.SeekToBegin();
csf.WriteString("nnnaaa!\n");
csf.WriteString(m_disp);
csf.Close();
CStdioFile csf;//写文件
CString m_disp;
if(csf.Open ("E://test//log.txt",/*CFile::modeCreate|CFile::modeNoTruncate|*/CFile::modeReadWrite|CFile::typeText)==NULL)
{
AfxMessageBox("建立文件失败");
return;
} csf.SeekToBegin();
csf.Read(m_disp.GetBufferSetLength(csf.GetLength()),csf.GetLength());
csf.SeekToBegin();
csf.WriteString("nnnaaa!\n");
csf.WriteString(m_disp);
csf.Close();
int len = csf.GetLength();
char *buf = m_disp.GetBufferSetLength(len+1);
csf.Read(buf,len);
buf[len]=NULL;//记得加上 NULL 结尾!!!
...
buf[l_len]=NULL;//记得加上 NULL 结尾!!!
...
CString msg;
msg="xxxxxxxxxxxxxxxxxxxxxxxx";
CFile file("c:\\test.txt",CFile::modeCreate|CFile::modeReadWrite);
file.Write(msg,strlen(msg));
我在末尾加了NULL了,还是不行。
csf.Read(m_disp.GetBufferSetLength(csf.GetLength()),csf.GetLength());
这里会忽略掉 0x0D的(即回车)。
如果你是设为 CFile csf;
if(csf.Open ("E://test//log.txt",/*CFile::modeCreate|CFile::modeNoTruncate|*/CFile::modeReadWrite)==NULL) //这里不要CFile::typeText
比较就知道了。
所以建议,如用CStdioFile的,就只用它的ReadString好了。
或者全改为CFile较稳健,一定可以读取全部的。