假设STUDS.DAT文件是在类SCHOOLS的对象的帮助下创建的,其定义如下:class SCHOOLS
class SCHOOLS
{
int SCode; // School Code
char SName[20]; // School Name
int NOT; // Number of Teachers in the school
public:
void Display()
{cout<<SCode<<"#"<<SName<<"#"<<NOT<<endl;}
int RNOT(){return NOT;}
};
问题找到以下C ++代码的输出,考虑到硬盘上存在二进制文件SCHOOLS.DAT,其中包含以前在上面声明的类SchoolS的10所学校的以下记录。
代码名称NOT
1001 Brains School 100
1003儿童生活学校115
1002 Care Share School 300
1006教育生命学校50
1005 Guru Disciple House 195
1004圣洁教育学校140
1010 Rahmat E Talim School 95
1008 Innovate Excel School 300
1011 Premier Education School 200
1012 Uplifted Minds School 100
void main()
{
fstream SFIN;
SFIN.open("SCHOOLS.DAT",ios::binary|ios::in);
SCHOOLS S;
SFIN.seekg(5*sizeof(S));
SFIN.read((char*)&S, sizeof(S));
S.Display();
cout<<"Record :"<<SFIN.tellg()/sizeof(S) + 1<<endl;
SFIN.close();
}
输出1004#Holy Education School#140记录:7
我的问题记录是7而不是6。
我作为S值的方法将是24。在添加了2个字节的int Scode,2个字节的int NOT,20个字节的char SName [20]之后得到它。
所以sizeof(S)的值将是24,SFIN.tellg的值将是120除以它们将给我们5然后我们必须加1.那么它将是6对吗?