7是正确答案,而不是输出中的6

问题描述 投票:0回答:1

假设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对吗?

c++ fstream data-handling
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.