所以,这是我书中给出的问题。
它是阅读以下代码并回答下面给出的问题:
#include<fstream.h>
class Book
{
int Bno;char title[20];
public:
void Enterval()
{
cin>>Bno;
cin.getline(title,20);
}
void ShowVal()
{
cout<<Bno<<"#"<<title<<endl;
}
};
void Search(int Recno)
{
fstream file;
Book B;
file.open("BOOKS.DAT",ios ::binary|ios :: in);
______________// statement 1
file.read((char*)& B,sizeof(B));
B.ShowVal();
file.close();
}
1) 将文件指针指向要读取的所需记录的开头,作为函数的参数发送(假设 RecNo 1 代表第一条记录)。
给出的答案是
file.seekg((RecNo-1)*sizeof(B));
我只想知道他们为什么写(RecNo-1)。是文件打开时文件末尾的文件指针,它是否指向记录的开头。
我也想知道答案是否可以
file.seekg(-1*sizeof(B),ios::cur);
因为我们必须从记录的开头阅读。
如果我是对的,请告诉我,如果错了,请纠正我。
帮助表示赞赏。
谢谢!