Đọc ghi file nhị phân bị sai

Mọi người cho em chỗ này em sai ở đâu mà chạy toàn sai ạ?Em cảm ơn

void write_file(Qlhs a[],int &n)
{
	fstream file;
	file.open("sinhvien.dat",ios::out|ios::binary);
	if(!file)
	{
		cout<<"\nKhong mo duoc file!!"<<endl;
		exit(1);
	}
	for(int i=0;i<n;i++)
	{
			file.write((char *)&a,sizeof(Qlhs));

	}

	file.close();
	
}
void read_file(Qlhs a[],int &n)
{
	fstream file2;

		file2.open("sinhvien.dat",ios::in|ios::binary);
	if(!file2)                    
	{
		cout<<"\nKhong mo duoc file!!"<<endl;
		exit(1);
	}	
		while(file2.eof()==false)
		{
			file2.write((char *)&a,sizeof(Qlhs));
			n++;
		}

		output(a,n);  
}

Bạn cast Qlhs về char array, vậy post luôn code của class Qlhs lên thử

1 Like

đây ạ

struct Qlhs
{
	char ma[15];
	char khu[30];
	float toan;
	float van;
	float diemut;
	float tong;
};

Mình thắc mắc 2 chỗ:

  1. Hàm read_file sao lại gọi file2.write()?
  2. Sao cần tham số n. Có phải vì lưu n objects Qlhs trong mảng a? Nếu có thì cách bạn lưu thế nào?
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?