@Anyosi

Как правильно изменить запись в файле (С++)?

Функция должна по id студента и code предмета находить запись в файле и изменять ее. Но после ее работы остается только измененная запись и нолики в файле. Что нужно сделать, что бы работало правильно?

void Register::setRecord() {
	int id, code;
	int count = 0;
	cout << "--Изменение данных--" << endl;
	cout << "Введите номер студенческого билета: ";
	cin >> id;
	cout << "Введите номер предмета: ";
	cin >> code;

	fileRead.open(file, ios::binary);

	if (fileRead.is_open())
	{
		Record record;
		while (fileRead.read((char*)&record, sizeof(Record)))
		{
			if (record.studentId == id && record.subId == code) {
				Record rec;
				fileWrite.open(file, ios::binary);
				fileWrite.seekp(sizeof(Record)*(count), ios::beg);

				cout << "Имя студента: ";
				cin >> rec.student;
				cout << "Номер билета: ";
				cin >> rec.studentId;
				cout << "Название предмета: ";
				cin >> rec.subject;
				cout << "Номер предмета: ";
				cin >> rec.subId;
				cout << "Оценка: ";
				cin >> rec.mark;
				
				fileWrite.write((char*)&rec, sizeof(Record));
				fileWrite.close();
			}

			count++;
		}
		fileRead.close();
	}
	else
	{
		cout << "File not founded." << endl;
	}
}
  • Вопрос задан
  • 495 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы