Cần trợ giúp về đọc ghi file


Xin phép mọi người mình có 1 vấn đề về việc đọc dữ liệu từ file, khi mình ghi dữ liệu đã được cập nhật vào file nhưng khi mình đọc file thì lại không ra kết quả. Mong mọi người có thể giúp đỡ mình!!

Mã trả về 3221225477 (0xC0000005 - Access Violation) có nghĩa là bạn đang truy xuất vào địa chỉ bị cấm.
Bạn đang truy xuất các con trỏ đang bằng null. Tức việc đọc của bạn không thành công.

Bạn nên đăng mã của bạn lên thay vì chụp hình.

2 Likes
#include<bits/stdc++.h>

using namespace std;

class CBCNV {
protected:
	string ma;
	string ten;
	int luong;
	int luong_theo_nam;
public:
	void nhap() {
		cout << "Nhap ma: ";
		std::getline(cin, ma);
		cout << "Nhap ten: ";
		std::getline(cin, ten);
		cout << "Nhap luong: ";
		cin >> luong; cin.ignore();
		cout << "Nhap luong theo nam: ";
		cin >> luong_theo_nam;
	}
	virtual void xuat() {
		cout << setw(10) << ma << setw(20) << ten << setw(15) << luong << setw(15) << luong_theo_nam << setw(15);
	}
	virtual void doc_file(ifstream& filein) {
		getline(filein, ma, ',');
		filein.seekg(1, ios_base::cur);
		getline(filein, ten, ',');
		filein >> luong;
		filein >> luong_theo_nam;
	}
	virtual void Ghi_file(ofstream& fileout) {
		fileout << ma << ",";
		fileout << ten << ",";
		fileout << luong << ",";
		fileout << luong_theo_nam << ",";

	}
	void Set_ma(string ma) {
		this->ma = ma;
	}
	string Get_Ma() {
		return ma;
	}
	void Set_ten(string ten) {
		this->ten = ten;
	}
	string Get_ten() {
		return ten;
	}
	void Set_luong(int luong) {
		this->luong = luong;
	}
	int Get_luong() {
		return luong;
	}
	void Set_nam_luong(int luong_theo_nam) {
		this->luong_theo_nam = luong_theo_nam;
	}
	int Get_luong_nam() {
		return luong_theo_nam;
	}
	CBCNV() {}
	~CBCNV() {}
};
class CBQL : public CBCNV {
private:
	int phu_cap;
	int thuong;
public:

	void nhap() {

		CBCNV::nhap();
		cout << "Nhap phu cap: "; cin >> phu_cap;
		cout << "Nhap thuong: "; cin >> thuong; cin.ignore();
	}
	void xuat() {
		CBCNV::xuat();
		cout << phu_cap << setw(15) << thuong << endl;
	}
	void Ghi_file(ofstream& fileout) {
		CBCNV::Ghi_file(fileout);
		fileout << phu_cap << ",";
		fileout << thuong << endl;
	}
	void doc_file(ifstream& filein) {
		CBCNV::doc_file(filein);
		filein >> phu_cap;
		filein >> thuong;
	}
	void Set_phu_cap(int phu_cap) {
		this->phu_cap = phu_cap;
	}
	int Get_phu_cap() {
		return phu_cap;
	}
	void Set_thuong(int thuong) {
		this->thuong = thuong;
	}
	int Get_thuong() {
		return thuong;
	}
	CBQL() {}
	~CBQL() {}
};
class NV : public CBCNV {
private:
	int tien_lam_them;
public:
	void nhap() {
		CBCNV::nhap();
		cout << "Nhap tien lam them: ";
		cin >> tien_lam_them; cin.ignore();
	}
	void xuat() {
		CBCNV::xuat();
		cout << setw(15) << tien_lam_them << endl;
	}
	void Ghi_file(ofstream& fileout) {
		CBCNV::Ghi_file(fileout);
		fileout << tien_lam_them << endl;
	}
	void doc_file(ifstream& filein) {
		CBCNV::doc_file(filein);
		filein >> tien_lam_them;
	}
	void Set_tien_them(int tien_lam_them) {
		this->tien_lam_them = tien_lam_them;
	}
	int Get_tien_lam_them() {
		return tien_lam_them;
	}
	NV() {}
	~NV() {}
};
int main() {
	int n, m;
	vector<CBQL> dsQl;
	vector<NV> dsNV;
	CBQL ql;
	NV nv;
	CBCNV* ds_1[100];
	while (1) {
		cout << "\n===========MANU==========";
		cout << "\n 1.Nhap thong tin CBCNV";
		cout << "\n 2.In danh sach CBCNV";
		cout << "\n 3.Ghi file theo danh sach";
		cout << "\n 4.Doc file";
		cout << "\n 0.Thoat ra";
		int chon;
		cout << "chon 1 || 2 || 0";
		cin >> chon;
		if (chon == 1) {
			cout << "\n===========MANU==========";
			cout << "\n 1.Nhap thong tin QL";
			cout << "\n 2.In danh sach NV";
			cout << "\n 0.Thoat ra";
			int chon_1;
			cout << "chon 1 || 2 || 0";
			cin >> chon_1;
			if (chon_1 == 1) {

				cout << "Nhap so luong quan li: "; cin >> n; cin.ignore();
				for (int i = 0; i < n; i++) {
					cout << "Nhap thong tin quan li thu" << i + 1 << endl;
					ql.nhap();
					dsQl.push_back(ql);
				}
			}
			else if (chon_1 == 2) {

				cout << "Nhap so luong nhan vien: "; cin >> m; cin.ignore();
				for (int i = 0; i < m; i++) {
					cout << "Nhap thong tin nhan vien thu" << i + 1 << endl;

					nv.nhap();
					dsNV.push_back(nv);
				}
			}
			else {
				break;
			}
		}
		else if (chon == 2) {
			cout << "Danh sach thong tin Quan li: \n";
			cout << setw(10) << "Ma" << setw(20) << "Ten" << setw(15) << "Luong" << setw(15) << "Nam luong" << setw(15) << "Phu cap" << setw(15) << "Thuong" << endl;
			for (int i = 0; i < dsQl.size(); i++) {
				dsQl[i].xuat();
			}
			cout << "Danh sach thong tin nhan vien: \n";
			cout << setw(10) << "Ma" << setw(20) << "Ten" << setw(15) << "Luong" << setw(20) << "Luong nam" << setw(15) << "Tien lam them" << endl;
			for (int i = 0; i < dsNV.size(); i++) {
				dsNV[i].xuat();
			}
		}
		else if (chon == 3) {
			ofstream fo("CBCNV.dat", ofstream::out);

			for (int i = 0; i < dsQl.size(); i++) {
				ql = dsQl[i];
				ql.Ghi_file(fo);
			}
			for (int i = 0; i < dsNV.size(); i++) {
				nv = dsNV[i];
				nv.Ghi_file(fo);
			}
			fo.close();
			cout << "Ghi thanh cong!!" << endl;
		}
		else if (chon == 4) {
			ifstream fi("CBCNV.dat", ifstream::in);
			int dem = 0;
			while (fi.eof() == false) {
				string m;
				fi >> m;
				dem++;
			}
			fi.seekg(0, ios_base::beg);
			for (int i = 0; i < dem; i++) {
				char c;
				fi >> c;
				fi.seekg(-1, ios_base::cur);
				CBCNV* x;
				if (c == 'Q' || c == 'q') {
					x = new CBQL();
					x->doc_file(fi);
				}

				else if (c == 'N' || c == 'n') {
					x = new NV();
					x->doc_file(fi);
				}
				ds_1[i] = x;
			}
			fi.close();
			cout << "\n\n\t\tTHONG TIN DANH SACH TOAN BO\n";
			for (int i = 0; i < dem; i++) {
				ds_1[i]->xuat();
			}
			system("pause");
		}
		else {
			break;
		}
	}
	system("pause");
	return 0;

}

đây là đoạn code của mình, do mình chưa thành thạo về việc đọc ghi file nên mong bạn giúp mình khắc phục vấn đề này

Bạn chạy chế độ gỡ lỗi (debug) để xem chạy đến đâu bị lỗi.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?