hur.cn - 华软网

 热门搜索

关于CFile::end的疑问

  作者:未知    来源:网络    更新时间:2010/12/16
请问CFile::end 所指向的文件尾到底指的是什么?

这个“文件尾”是什么意思?

我写了这样一段代码

           if(m_cFile.GetPosition()==CFile::end)
{
MessageBox("已到达文件尾!");
return ;
}
else
{
//其他操作
}

目的是想读文件的时候读到文件尾能够提醒一下
但是程序运行时却并不会弹出  “已到达文件尾!”的消息框

那么CFile::end 所指的文件尾到底是什么尾?
文件内的指针如何才能指向它?
---华软 网友回答---
你有没有往后seek?如果没有的话怎么会到文件尾呢?

---华软网友回复---
C++">CFile f;
f.Open("d:\\a.txt",CFile::readOnly);
f.SeekToEnd();
 
 
if(f.GetPosition() == f.GetLength())
{
MessageBox("end");
}
f.Close();

---华软网友回复---
我一直在 Read 啊
我一Read,指针不就往后移了嘛

文件里是有一串字符串的  “........小乌    100  小猪   100”
我读一句就让它显示一句
最后都读到 
小猪   100   了

可再接着读还是没弹出消息框啊。。。。。

 
---华软网友回复---
把你源码贴出来……
---华软网友回复---
void CWorkView::OnOperateNext() 
{
// TODO: Add your command handler code here
if(m_cFile.GetPosition()==CFile::end)
{
MessageBox("已到达文件尾!");
return ;
}
else
{
char buf[10]={0};
m_cFile.Seek(0,CFile::current);
m_cFile.Read(buf,10);
m_strName=buf;
memset(buf,0,10);
m_cFile.Read(buf,10);
m_iGrade=atoi(buf);
}
UpdateData(FALSE);
}
---华软网友回复---
楼主在哪里调的OnOperateNext()?贴出来
---华软网友回复---
以一次OPEN和一次CLOSE为目的,需要看你里面都做了什么。
---华软网友回复---
OnOperateNext()
是BN_CLICKED 消息函数啦

我现在的问题就是 CFile::end 指向的到底是啥?
这个“文件尾”到底是啥?
---华软网友回复---
引用 2 楼 cpp2017 的回复:
C/C++ code
CFile f;
    f.Open("d:\\a.txt",CFile::readOnly);
    f.SeekToEnd();
     
     
    if(f.GetPosition() == f.GetLength())
    {
        MessageBox("end");
    }
    f.Close();

……


用GetLength() 确实可以 弹出“已到达文件尾!”的消息框

可为什么CFile::end 就是不行?
---华软网友回复---
CFile::end是seek时一个枚举标记,GetPosition返回的是当前的位置,以字节表示,这两个不是同一类东西。

---华软网友回复---
C++">
CFile file;
file.Open("E://test.xml",CFile::modeRead);
long a=file.GetLength();
file.SeekToEnd();
long b=file.GetPosition();
file.Close();

这里,a和b的值相等,都是文件尾,你可以这样判断。
---华软网友回复---
多谢两位啦
---华软网友回复---
 学习啦,谢谢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。