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

rogp10 viết 17:56 ngày 01/10/2018
  • 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.
Hoàng Huy viết 17:52 ngày 01/10/2018

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

rogp10 viết 17:46 ngày 01/10/2018

Làm sao free một biến tĩnh được

Bài liên quan
0