Задать вопрос
@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;
	}
}
  • Вопрос задан
  • 540 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
LIAN Москва
от 270 000 до 300 000 ₽
НТЦ ПРОТЕЙ Санкт-Петербург
от 150 000 до 330 000 ₽
Aporia Севастополь
До 150 000 ₽