Предположим, что файл SCHOOLS.DAT создан
с помощью объектов класса 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 существует на жестком диске со следующими записями 10 школ
класс SCHOOLS, как заявлено в предыдущем.
SCode SName NOT
1001 Brains School 100
1003 Школа детской жизни 115
1002 Care Share School 300
1006 Школа образования для жизни 50
1005 Гуру Шишья Садан 195
1004 Священная школа образования 140
1010 Школа Рахмат Е Талим 95
1008 Innovate Excel School 300
1011 Высшая школа образования 200
1012 Школа поднятого сознания 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 # Священная школа образования № 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, верно?