Đọc tệp nhị phân rồi in ra danh sách nhưng không biết trước số phần tử

em muốn đọc tệp nhị phân rồi in ra danh sách học sinh nhưng lại ko biết trc số phần tử có trong mảng
Mọi người giúp em với.Em cảm ơn!!

Thì đọc đến hết tập tin thôi. Mà ngôn ngữ gì? Nếu C++ thì lo gì việc tạo mảng, vector lo được mà.

2 Likes

em chưa học vector anh ạ
ngôn ngữ là c++ ạ

Lấy dung lượng của file / dung lượng struct (với điều kiện là dùng mảng kí tự thay cho string) :penguin:

Hoặc cách phổ biến hơn với những trường hợp như thế này là ghi luôn số phần tử vào trong file. Ví dụ như 2 byte đầu tiên là số phần tử

Còn đơn giản nhất là cách của @SITUVN.gcd

2 Likes

em ko biết ghi số lượng phần tử trong file nhị phân ko biết có khác với cách viết cho tệp text ko ạ?

Không, cứ ghi một biến int giống như ghi struct bình thường là được

2 Likes

file>>n như này à anh
lúc trc em có thử rồi,nhưng đến khi đọc thì nó đọc luôn mấy cái trong mảng nên ra lỗi

Ghi biến số nguyên đầu tiên thì cũng phải đọc nó đầu tiên mới được

1 Like

em cũng đã nghĩ đến rồi
nhưng ko biết cách đọc trong file nhị phân như nào thôi
đọc như kiểu văn bản hay phải dùng đến read ạ

Dùng read. Dùng file nhị phân thì cũng phải đọc theo kiểu của nó. Nói chung là đọc ghi số nguyên, chuỗi,… cũng y chang đọc, ghi struct

P/s: Trong file nhị phân thì struct là dãy các biến liên tiếp nhau ở dạng nhị phân

2 Likes

anh có thể ví dụ cho em đc ko ạ
nãy h em thử đọc và ghi số phần tử như vậy rồi mà vẫn ko đc ạ

H em đang khó 1 chỗ anh ạ
Kiểu như em toàn dùng số lượng phần tử bên ngoài để chạy phòng hàm

void input(Qlhs a[],int n)
{
	for(int i=0;i<n;i++)
	{
		cin.ignore();

Không biết có cách khác ko ạ chứ em đang làm bài tập lớn h ko thể sửa hết anh ạ

		cout<<"\nNhap ma hoc sinh thu "<<i+1<<":";
		cin.getline(a[i].ma,15);
		cout<<"\nNhap khu vuc hoc sinh dang song:";
		cin.getline(a[i].khu,30);
		cout<<"\nNhap diem toan cua hoc sinh:";
		cin>>a[i].toan;
		cout<<"\nNhap diem van cua hoc sinh:";
		cin>>a[i].van;
	
	}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?