01/10/2018, 09:31

Chỉnh sửa File trong C++

Ví dụ như mình đang có một chương trình quản lý sinh viên, gồm tên và điểm môn học.
Mình muốn sửa thông tin một sinh viên nào đó thì phải làm thế nào?
Giả sử như tồn tại file binary nhị phân gồm có tên (char[30]) và điểm ba môn học (int) như sau:

Maria Ozawa 5 6 7
Suzuhara 9 8 9
Luffy 1 1 6
Nguyen Van Bo 10 10 1
Nobita 0 0 0

Giờ mình muốn nâng điểm cho bạn Suzuhara lên (vì bạn ấy xinh) thì làm thế nào?
Mình đã thử code như này mà không thay đổi được gì, mọi người giúp với!

//edit file binary
#include <iostream>
#include <fstream>
using namespace std;
typedef struct {
	char name[30];
	float toan, ly, hoa;
} student;
//
int main() {
	student sv;
	short n;
	cout<<"Sinh vien can sua? ";
	cin>>n;
	n--;
	fstream fil ("outfile.bin", ios::binary);
	fil.seekg(sizeof(student)*n, ios::beg);
	fil.read((char*)&sv, sizeof(student));
	cout<<"--------
"<<sv.name
				<<"
Toan: "<<sv.toan
				<<"
Ly: "<<sv.ly
				<<"
Hoa: "<<sv.hoa
				<<'
';
	fil.close();
	fstream file ("outfile.bin", ios::binary | ios::ate);
	file.seekg(sizeof(student)*n, ios::cur);
	fflush(stdin);
	cout<<"Name: ";
	cin.getline(sv.name, 30, '
');
	cout<<"Toan: ";
	cin>>sv.toan;
	cout << "Ly: ";
	cin>>sv.ly;
	cout<<"Hoa: ";
	cin>>sv.hoa;
	file.write((char*)&sv, sizeof(student));
	file.close();
	cout<<"--------
"<<sv.name
						<<'
'<<sv.toan
						<<'
'<<sv.ly
						<<'
'<<sv.hoa
						<<'
'<<"Saved!";
	return 0;
}
Bài liên quan
0