2 mangguo0824 mangguo0824 于 2016.01.24 14:57 提问

CFile写数据到文件中的问题

使用CFile读写文件,将计算的多个类型结果(有long 、int、cstring、double)输入到文本中的一行内,并用“,”隔开,形成csv格式。例如结果是:
文件名:aaa.xxx,eee, A:12%, B:15% , C:35%,D:38%,请教怎么写入文本。难道非要转换格式再输入,就不能像fwite一样一次写入文件中,aaa.xxx A:12%, B:15% , C:35,D:38%,而且还要采用seekend()追加的方式进行吗
图片说明

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.25 06:37

你要的这个无非就是写csv文件(逗号分隔列,按行存储的文本数据)
参考:http://blog.sina.com.cn/s/blog_4900be890100ws85.html

zhao4zhong1
zhao4zhong1   Rxr 2016.01.25 10:31

推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...[color=#FF0000][size=24px]b[/size][/color]");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

mangguo0824
mangguo0824 谢谢您
2 年多之前 回复
91program
91program   Ds   Rxr 2016.01.24 15:14

写入肯定是可以一次的,关键是写入前你要将需要写入的数据准备好。
肯定是需要格式化成字符串的,否则你打开文件就看不到你想要的结果。

至于是否需要 seekend,取决于你是否关闭后、再打开文件,向文件最后增加数据?如果需要,则可以使用追加的方式打开。

mangguo0824
mangguo0824 是不是应该申请缓冲区,将这些写入的信息放进缓冲区,然后再写进TXT
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
CFile 读写文件 (解决汉字,换行,空字符问题) .
CStdioFile file;  if (!file.Open(_T("d:\\file.txt"),CFile::modeReadWrite))  {   file.Open(_T("d:\\file.txt"),CFile::modeCreate|CFile::modeReadWrite);  }  CString str;  CTime time=CTime::GetCurre
使用MFC的CFile文件类和CArchive串行化类进行二进制文件读写操作
一  编程案例介绍    本案例基于控制台工程,创建专门的演示类CDemo,实现二进制文件的读写串行化操作,具体代码如下: 1 CDemo类定义: class CDemo  { public:     void CreateFile();     CDemo();     virtual ~CDemo();     void Serialize(CArchive &ar);
CFile向文件中追加内容
CFile file; if (file.Open(strFileName, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate)) {      file.SeekToEnd();      file.Write(pBase,length);// pBase为要写入的数据的指针,length为要写入的长度      file.Close(); } 1.在Open方法中需要有CFile::modeNoTruncate属性。该属性和CFil
向记录文件中写入数据
CString sockfilename; CFile sockfile; sockfilename = "sockfile.txt"; //那其他成员变量必须有默认初始化函数,为什么这里没有赋值宽字符串 bool TcpClient::TcpIni() { //---------------------------------------SOCKET环境初始化-------- char
CFile 写文件时,清空文件
<br /> <br /> <br />如果要是清空缓存 用<br />flush()即可<br /> <br /> <br />如果要是写文件时把原来的文件清空(如果存在原文件),<br />则在Open的时候不要带modeNoTruncated<br /> <br />即 CFile file;<br />file.Open("d.txt",CFile::modeCreate|CFile::modeWrite);<br /> <br /> 
C++ CFile::Rename 出现“拒绝访问”异常 及解决方案(不能说原创,自己悟出来的)
出现这样的问题,是由于我们FTP上的的打包文件解包到本地文件夹中,由于FTP上打包文件中含一个.db的文件,再对其文件进行写数据时,出现了拒绝访问异常(其他文件写数据一切正常),没办法只能想办把此类型文件扩展名改成了.tmp临时文件,当数据写完后再改回原来的.db文件,但重命名时就出现了下面异常,废话不多说了。。。问题:C++ 对新创建的文件进行写数据后,如果再对其进行重命名,则可能会出现拒绝访问原因:是因为系统认为当前文件夹中可能与你重命名件同名文件存在,所以不允许重命令,会报出“拒绝访问异常"(个人理解
CFile写文本的换行问题
       一直以来都用CStdioFile.writestring来写文本,在文本里使用/n来换行,但CFile的write在写文本时/n不能换行,记事本打开显示未换行,写字板打开显示是换行的,utraledit32打开的话会提示“非DOS格式,是否转换”,点是转换时才会显示换行。     今天查了下,CFile写出时用/r/n就可以换行,难道CStdioFile会自动加/r,也许有其他原
CFile以追加的的方式写文件
CFile是MFC中的一个类,可以方便的读写文件。如果读写一行的话建议使用CStdioFile类的ReadString()和WriteString()。这些类要实现追加的方式写文件的话。要设定参数和文件指针的位置。具体方法如下:CFile myfile; if(!myfile.Open(Filename,CFile::modeNoTruncate|CFile::modeWrite)==
解决CFile 中换行问题
写一个程序时 要把几个命令写入一个bat的文件中其中文件换行成了问题察看一些资料没能找到答案 在VC++群上“听雨舟”大虾给了一句代码就搞定了呵呵file.write(_T("/r/n"),2);哈哈就是这么简单!!!完整的代码如下:else { . CString str="hello"; CString str1="word"; CFile file("c://test
CFile按行读取并删除行
test.txt line1   第一行内容 line2   第二行内容 line3   第三行内容 程序读出   “第一行内容”   之后   删除。 在读取将读出   “第二行内容”   之后   删除。   void CReplaceR