MFC CFile 读取出错

CFilereadd("first.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead);char*... CFile readd("first.txt",CFile::modeCreate |CFile::modeNoTruncate| CFile::modeRead);
char *quan;
DWORD lenth;
lenth=readd.GetLength();
quan=new char[lenth+1];
quan[lenth]=0;
readd.Read(quan,lenth);
readd.Close();
MessageBox(quan);
调试看到lenth=320;
可是读出来的 quan 只有最前面10几个字节,怎么会这样呢??
现在我可以确定不是读的问题,而是写入的问题。。
哪位大神指教下为什么会这样?
或者指教下写文件的时候要注意什么呢?
我的目的是要读取某一行然后把它删掉的。。。
展开
 我来答
匿名用户
2012-06-06
展开全部
CFile readd("first.txt",CFile::modeCreate |CFile::modeNoTruncate| CFile::modeRead);
你都设置了CFile::modeCreate ,你都重新创建文件了,lenth只可能为0 啊。而且提醒一个极为简单但是比较容易忽略的问题:记得是Debug模式啊,亲。
更多追问追答
追问
不是的。CFile readd("first.txt",CFile::modeCreate |CFile::modeNoTruncate| CFile::modeRead);
这一句我用在显示、查找模块都没问题,只是在,写删除模块的时候出问题。而且有后面的CFile::modeNoTruncate就保证了长度不被截断为0 。。。至于你说的Debug模式是什么意思,我不太懂。。。
追答
sorry,我看错了CFile readd("first.txt",CFile::modeCreate |CFile::modeNoTruncate| CFile::modeRead);没有问题。
解决办法:
1.UINT uiNumOfRead = readd.Read(quan,lenth); 查看返回值,如果和lenth相等。那说明读取没有问题。
2.判断文件的内容是否正常,“读出来的 quan 只有最前面10几个字节”不要看字符串(因为buf里面可能有‘\0’),要直接看看quan内存里面的数据。
摆渡不知道001
2012-06-15
知道答主
回答量:1
采纳率:0%
帮助的人:1610
展开全部
你写入的时候可能是多次续写,CFile每次续写时通过SeektoEnd()找到的是一个结束符,然后续写的时候是在这个“结束符”后开始续写的,你读出来的时候可能是遇到第一个结束符它就认为读完了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式