01/10/2018, 15:41
Thắc mắc mảng động kiểu cấu trúc
Mọi người cho em hỏi về mảng động của kiểu cấu trúc trong lập trình c ạ
Em đọc dữ liệu từ file đưa vào mảng sau đó đưa vào mảng động
em đang thắc mắc là sao nó vẫn lỗi và không thể giải phóng vùng nhớ được, mọi người giúp em với
Em cảm ơn!
typedef struct
{
int mssv;
char hoten[25];
float dtbtl;
}sinhvien;
void docfile(sinhvien ds[], int *n)
{
int i=0,j;
char temp[20];
FILE *f=fopen("D:\sv.txt","rt");
if(f!=NULL)
{
while(!feof(f))
{
fscanf(f,"%d",&ds[i].mssv);
fgetc(f);
fgets(ds[i].hoten,25,f);
fscanf(f,"%f",&ds[i].dtbtl);
fgets(temp,sizeof(temp),f);
i++;
}
*n = i;
//doc file dua vao mang dong
sinhvien **dssv;
dssv = (sinhvien**)malloc(sizeof(sinhvien*)*i);
for(j=0;j<i;j++)
{
dssv[j] = (sinhvien*)malloc(sizeof(sinhvien)*i);
dssv[j].mssv = ds[j].mssv;
strcpy(dssv[j].hoten,ds[j].hoten);
dssv[j].dtbtl = ds[j].dtbtl;
}
//giai phong
for(j=0;j<i;j++)
{
free(dssv[j].mssv);
free(dssv[j].hoten);
free(dssv[j].dtbtl);
}
//in ra man hinh
for(j=0;j<i;j++)
{
printf("%d ",dssv[j].mssv);
printf("%s ",dssv[j].hoten);
printf("%.1f
",dssv[j].dtbtl);
}
fclose(f);
}
}
Nội dung file sv.txt
170487 Phan Quoc Nam 4.0
123424 Pham Minh Hoang 1.0
125496 Le Kieu Diem 6.1
120132 Pham Kieu Trang 5.0
Bài liên quan
dssv
là hai sao =>dssv[j]
là một sao => cú pháp sai. Không hiểu sao code này biên dịch được.free
rồi thì không in được nữa.Em free trước in sau là để kiểm tra xem có free được kh anh ơi
mà chỗ free nó báo lỗi
Làm sao
free
một biến tĩnh được