【发布时间】:2010-03-30 17:48:50
【问题描述】:
当我运行这段代码时,open 和 seekg 和 tellg 操作都成功了。 但是当我阅读它时,它失败了,eof,bad,fail 位是 0 1 1。
什么会导致文件损坏? 谢谢
int readriblock(int blockid, char* buffer)
{
ifstream rifile("./ri/reverseindex.bin", ios::in|ios::binary);
rifile.seekg(blockid * RI_BLOCK_SIZE, ios::beg);
if(!rifile.good()){ cout<<"block not exsit"<<endl; return -1;}
cout<<rifile.tellg()<<endl;
rifile.read(buffer, RI_BLOCK_SIZE);
**cout<<rifile.eof()<<rifile.bad()<<rifile.fail()<<endl;**
if(!rifile.good()){ cout<<"error reading block "<<blockid<<endl; return -1;}
rifile.close();
return 0;
}
【问题讨论】:
-
如果您可以正确格式化您的代码(就像 Evan Teran 为您所做的那样)并使用 cmets 而不是“**”来突出显示特定代码(这样您的代码仍然可以编译),这将非常有帮助。