Em tạo ra một struct CT_HOADON
struct CT_HOADON
{
int MAVT;
int Solg;
float Dongia;
};
Và đây em tạo ra 1 danh sách liên kết đơn của Chi tiết hóa đơn :
struct CT_HD
{
CT_HOADON cthd;
struct CT_HD *next;
};
typedef struct CT_HD * list_CTHD;
Sau đó em tạo tiếp 1 danh sách tuyến tính hóa đơn , trong struct HOADON có chứa con trỏ list_CTHD giống như dưới đây :
struct HOADON
{
int SoHD;
date Ngay;
char Loai;
int MANV;
list_CTHD contro;
};
Danh sách tuyến tính của hóa đơn :
struct list_hd
{
int n;
HOADON hd[300];
};
typedef struct list_hd dshd;
Đây là phần ghi HÓA ĐƠN vào file txt ở dạng nhị phân:
void LuuDs_HD ( list_hd dshd, char *tenfile){
FILE *f;
f= fopen (tenfile, "wb");
if (f==NULL) { printf ("Loi mo file de ghi"); return ; }
for (int i=0; i < dshd.n ; i++)
{
LuuDs_CTHD(dshd.hd[i].contro);
fwrite ((char*)(&dshd.hd[i]), sizeof(HOADON),1,f);
}
fclose(f);
}
Đây là phần đọc HÓA ĐƠN từ file txt ở dạng nhị phân:
void LayDs_HD ( list_hd &dshd, char *tenfile)
{
FILE *f;
f= fopen (tenfile, "rb");
if (f==NULL) { cout<<"\nLoi mo file de doc"; return ; }
int i=0;
while ( fread (&dshd.hd[i], sizeof(HOADON),1,f)!=0 ) i++;
fclose(f);
dshd.n=i;
}
Khi em ghi vào thi không báo lỗi nhưng khi đọc file thì , phần con trỏ (cụ thể là list_CTHD contro; trong HOADON ) nó không lấy được dữ liệu ở phần con trỏ trong HOADON , nhiều ngày nay em tìm cách sửa mà chưa được , mong được sự giúp đỡ từ các bạn và các anh chị khắc phục , góp ý giúp em , cảm ơn tất cả mọi người !
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?