文件读写问题,请教老师!

richen 2001-07-18 08:28:47
一个文本文件我读入到CSTRING对象处理完毕,我想删除原来的内容,再存入我的新文本(CSTRING对象),其中文件对象m_file为全局地。

打开文件:
m_file.Open(dlg.GetPathName(),CFile::modeReadWrite | CFile::shareExclusive))


char *pScrip;
pScrip=new char[m_file.GetLength()];
m_file.Seek(0L,CFile::begin);
m_file.Read(pScrip,m_file.GetLength());

m_strView=pScrip

处理m_strView: ...............................................

保存: m_file.SetLength(0);//我不知道别的方法
m_file.Seek(0L,CFile::begin);
m_file.Write(m_strView,m_strView.GetLength());
m_file.Close();

为什麽文件没变化呢?




...全文
192 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cchuocp 2001-07-19
  • 打赏
  • 举报
回复
new char必须加一,除非你的文件以0结尾,否则m_strView=pScrip不知道pScrip的长度。
跟踪一下各函数的返回值,看看错在哪里?
Tasehouny 2001-07-19
  • 打赏
  • 举报
回复
其实很简单,如果只是为了处理CString 对象,可以这样做:

CStdioFile file;
file.Open(sFileName,CFile::modeRead|CFile::modeWrite)
CString str,str1;
while(file.ReadString(str))
{
str1 +=str;
str1 += "\n";
}

....Process str1......

//Then Write to file

file.WriteString(str1);
file.Close;

不用管什么长度,CStdioFile会自己计算的。
不解 2001-07-18
  • 打赏
  • 举报
回复
保存: m_file.SetLength(0);//我不知道别的方法
m_file.Seek(0L,CFile::begin);
m_file.Write(m_strView,m_strView.GetLength());
m_file.Close();
针对以上语句,提如下看法:
1。m_file.SetLength(0);后关闭CFile,即调用m_file.Close();然后再以写格式打开。
2。m_file.Write()中,m_strView最好用其GetBuffer(0);注意用完后ReleaseBuffer()一下。
wjyasd 2001-07-18
  • 打赏
  • 举报
回复
我看看你的程序 。 wjyasd@sina.com
richen 2001-07-18
  • 打赏
  • 举报
回复
内容没变呀!!!!!
就是没写进去!!!
kimo1980 2001-07-18
  • 打赏
  • 举报
回复
错,放在CString对象里也要加0。另外你说的文件没有变化是指文件长度没有变化吧?文件的内容可能已经改变了的。
jucee 2001-07-18
  • 打赏
  • 举报
回复
存完后要改变文件的长度吧
richen 2001-07-18
  • 打赏
  • 举报
回复
加一干吗呀?
因为要放在csTRING对象里,不必加\0,对吧?
wjyasd 2001-07-18
  • 打赏
  • 举报
回复
pScrip=new char[m_file.GetLength()]; // <-----申请空间是不是应该 为m_file.GetLength()+1 呀?

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧