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几个字节,怎么会这样呢??
现在我可以确定不是读的问题,而是写入的问题。。
哪位大神指教下为什么会这样?
或者指教下写文件的时候要注意什么呢?
我的目的是要读取某一行然后把它删掉的。。。 展开
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几个字节,怎么会这样呢??
现在我可以确定不是读的问题,而是写入的问题。。
哪位大神指教下为什么会这样?
或者指教下写文件的时候要注意什么呢?
我的目的是要读取某一行然后把它删掉的。。。 展开
2个回答
2012-06-06
展开全部
CFile readd("first.txt",CFile::modeCreate |CFile::modeNoTruncate| CFile::modeRead);
你都设置了CFile::modeCreate ,你都重新创建文件了,lenth只可能为0 啊。而且提醒一个极为简单但是比较容易忽略的问题:记得是Debug模式啊,亲。
你都设置了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内存里面的数据。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询