我想写一个.txt文件
比如在一个循环中写进123456
文件写完之后打开
显示为:
1
2
3
4
5
6
CFile file;
CString sFile(m_sFileName);
if( !file.Open(sFile, CFile::modeCreate |
CFile::modeReadWrite))
{
WARNING_MESSAGE);
return false;
}
file.SeekToEnd();
file.Write(&dResult, sizeof(double)); //写文件
file.Write("\n",2);
file.Close();
我这样写的,可是为什么看的时候总是二进制啊。
比如在一个循环中写进123456
文件写完之后打开
显示为:
1
2
3
4
5
6
CFile file;
CString sFile(m_sFileName);
if( !file.Open(sFile, CFile::modeCreate |
CFile::modeReadWrite))
{
WARNING_MESSAGE);
return false;
}
file.SeekToEnd();
file.Write(&dResult, sizeof(double)); //写文件
file.Write("\n",2);
file.Close();
我这样写的,可是为什么看的时候总是二进制啊。
解决方案 »
- MFC如何定义自己的控件?
- 求助 关于listbox文字显示问题
- 想做一个文件切割合成工具,不知道用哪种文件读取方式好?
- 关于socket端口的疑惑。
- 怎么创建一个状态栏并显示出来?
- 如何在VC中使用IHTMLDocument2::createElement()函数创建一个 IHTMLScriptElement?
- 我们只能选择COM吗?
- 救急!把一个CString对象写到SQL server的temp表中!
- PreTranslateMessage(MSG* pMsg)为什么不能接收汉字的两个字节?
- -->>请问怎么样实现在IE的工具栏里加入自己的应用按钮?就象Real那样的
- UNICODE编译提示这样的警告.
- 使用CArchive网络传输CArray数据不能析构?急了数天!拜托
这句话错了。你把dResult这个数值型变量的地址写到文件中了,当然是二进制样子。
应该将dResult转换为字符串。然后才能写到文件中
CString str;
str.Format("%f",dResult);
然后,file.Write(str,sizeof(doulbe);
要是写入char 类型的'1' '2' '3' '4' '5' '6'不就是字符型的PS:'1'=0x31 ....... '6'=0x36
CFile file;
CString sFile(m_sFileName);
if( !file.Open(sFile, CFile::modeCreate |
CFile::modeReadWrite))
{
WARNING_MESSAGE);
return false;
}
file.SeekToEnd();
char buf[20];
sprintf(buf, "%d\n", (int)dResult);
file.Write(buf, strlen(buf));
file.Close();
CStdioFile file;
CString strFile(m_sFileName);
if( !file.Open(sFile, CFile::modeCreate |
CFile::modeReadWrite))
{
WARNING_MESSAGE);
return false;
}
else
{
for(int i = 1;i < 7;i ++)
{
CString strContent;
strContent.Format("%d\n",i);
file.WriteString(strContent);
}
file.Close();
}
str.Format("%f\n",dResult);CFile file;
CString sFile(m_sSimuResultFileName);
if( !file.Open(sFile, CFile::modeCreate |CFile::modeReadWrite))
{
return false;
}
file.SeekToEnd(); //需要加这个马?
file.Write(str, sizeof(double)); //写文件
file.Close();
return true;我这样写怎么还是不行呢?不能够换行,每次都是把前一个数据给覆盖掉了。
你这段语句不是在循环中吧???如果是,那么文件的打开方式错了。CFile::modeCreate代开方式是不管你有没有这个文件,都会新建一个文件的。如果原先有的话,则会清空。应该用CFile::modeCreate|CFile::modeNoTruncate,这样的话,如果文件已经存在,则不会创建新文件了,将打开已经存在的文件。然后你用file.SeekToEnd应该可以正确写进去了。
{
out << i << "\n";
}
double d[2];
d[0] = 1.2343;
d[1] = 233.343;
for(int i=0;i<2;i++)
{
CFile file;
file.Open("C:\\abc.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
file.SeekToEnd();
CString str;
str.Format("%f\r\n",d[i]);
file.Write(str,str.GetLength());
file.Close();
}
期待你的出现。
if( !file.Open(sFile, CFile::modeCreate|CFile::typeText|CFile::modeReadWrite)
double d[2];
d[0] = 1.2343;
d[1] = 233.343;
for(int i=0;i<2;i++)
{
CStdioFile file;
file.Open("C:\\abc.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
file.SeekToEnd();
CString str;
str.Format("%f\r\n",d[i]);
file.Write(str,str.GetLength());
file.Close();
}
double d[2];
d[0] = 1.2343;
d[1] = 233.343;
for(int i=0;i<2;i++)
{
CStdioFile file;
file.Open("C:\\abc.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
file.SeekToEnd();
CString str;
str.Format("%f\n",d[i]);
file.WriteString(str);
// file.Write(str,str.GetLength());
file.Close();
}