Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Lỗi DevC hay lỗi Code?? :((((

  1. #1
    Ngày gia nhập
    04 2017
    Bài viết
    1

    Mặc định Lỗi DevC hay lỗi Code?? :((((

    Em có code 1 bài nhập từ file diemthi.txt vào con trỏ cấu trúc sinh viên, có hàm tổng hợp tổng hợp lại điểm trung bình và xóa những sinh viên trùng (vì trong file diemthi.txt 1 sinh viên có thể thi nhiều môn) em code chạy hoàn tất rồi kết quả đúng luôn, chuyện không có gì đáng nói cho đến khi em chạy lại lần 2 thì màn hình console không báo lỗi gì hết chỉ là màn hình rỗng :(( vài lần sau thì vài lần chạy đúng kết quả vài lần màn hình lại rỗng. Em không biết do code em chạy sai hay là devC của em bị lỗi. Em cám ơn ạ :((

    Nội dung file diemthi.txt của em đây ạ:
    Code:
    B1931222 Tran Trung Kiet          CT101 4 8.5
    B1931220 Tran Thanh Phu Tan       CT101 4 7.5
    B1931235 Nguyen Hoang Son         CT101 4 5.0
    B1931236 Truong Thi Thanh Thanh   CT101 4 7.0
    B1931211 Le Nguyen Phuong Anh     CT101 4 8.5
    B1931111 Mai Chi Tho              CT101 4 3.5
    B1931119 Nguyen Son Bao           CT101 4 9.0
    B1931000 Truong Minh Nghia        CT101 4 8.5
    B1931222 Tran Trung Kiet          CT103 4 6.5
    B1931220 Tran Thanh Phu Tan       CT103 4 9.5
    B1931235 Nguyen Hoang Son         CT103 4 7.0
    B1931236 Truong Thi Thanh Thanh   CT103 4 3.0
    B1931211 Le Nguyen Phuong Anh     CT103 4 5.5
    B1931111 Mai Chi Tho              CT103 4 8.5
    B1931119 Nguyen Son Bao           CT103 4 7.0
    B1931000 Truong Minh Nghia        CT103 4 7.5
    B1931222 Tran Trung Kiet          CT171 4 8.5
    B1931220 Tran Thanh Phu Tan       CT171 4 7.5
    B1931235 Nguyen Hoang Son         CT171 4 5.0
    B1931236 Truong Thi Thanh Thanh   CT171 4 6.5
    B1931211 Le Nguyen Phuong Anh     CT171 4 8.0
    B1931111 Mai Chi Tho              CT171 4 3.5
    B1931119 Nguyen Son Bao           CT171 4 5.0
    B1931000 Truong Minh Nghia        CT171 4 6.5
    B1931000 Truong Minh Nghia        CT222 4 6.5
    B1931222 Tran Trung Kiet          CT103 4 6.0
    B1931220 Tran Thanh Phu Tan       CT103 4 5.0
    B1931235 Nguyen Hoang Son         CT103 4 6.8
    Code:
    #include<stdio.h>
    #include<string.h>
    #include<malloc.h>
    typedef struct sv{
    	char mssv[10];
    	char ten[30];
    	char mamon[10];
    	int sotc;
    	float diem;
    	float tbtl;
    };
    
    int sum(){
    	FILE *f = fopen("diemthi.txt","r");
    	int i=0;
    	char c;
    	if(f!=NULL){
    		do{
    			c = fgetc(f);
    			if(c=='\n'){
    				i++;
    			}
    		}
    		while(!feof(f));
    	}else{
    		printf("error");
    	}
    	fclose(f);
    	return i;
    }
    
    
    void nhap(sv *ds, int n){
    	FILE *f = fopen("diemthi.txt","r");
    	char t[100];
    	int i = 0;
    	
    	if(f!=NULL){
    		while(!feof(f)){
    			fgets(ds[i].mssv,10,f);
    			ds[i].mssv[strlen(ds[i].mssv)-1] = '\0';
    			fgets(ds[i].ten,26,f);
    			ds[i].ten[strlen(ds[i].ten)-1] = '\0';
    			fgets(ds[i].mamon,7,f);
    			ds[i].mamon[strlen(ds[i].mamon)-1] = '\0';
    			fscanf(f,"%d %f",&ds[i].sotc, &ds[i].diem);
    			fgets(t,sizeof(t),f);
    			i++;
    		}
    	}else{
    		printf("error");
    	}
    	
    }
    
    void in2(sv *ds, int n){
    	printf("+---+---------+-------------------------+------+------+\n");
    	for(int i=0;i<n;i++){
    		printf("|%-3d|%-9s|%-25s|%-6d|%-6.1f|\n",i,ds[i].mssv,ds[i].ten,ds[i].sotc,ds[i].tbtl);
    	printf("+---+---------+-------------------------+------+------+\n");
    	}
    }
    void xoa(sv *ds,int *n,int k){
    	for(int i=k;i<*n;i++){
    		ds[i] = ds[i+1];
    	}
    	*n=*n-1;
    }
    
    void th(sv *ds,int *n){
    	for(int i =0;i<*n;i++){
    		ds[i].tbtl = ds[i].diem*ds[i].sotc;
    		for(int j=i+1;j<*n;j++){
    			if(strcmp(ds[i].mssv,ds[j].mssv)==0){
    				ds[i].tbtl = ds[i].tbtl + (ds[j].diem*ds[j].sotc);
    				ds[i].sotc = ds[i].sotc + ds[j].sotc;
    				xoa(ds,n,j);
    				j--;
    			}
    		}
    		ds[i].tbtl = ds[i].tbtl/ds[i].sotc;
    	}
    }
    
    int main(){
    	sv *ds;
    	int n = sum();
    	ds = (sv*)malloc(sizeof(sv)*n);
    	nhap(ds,n);
    	th(ds,&n);
    	in2(ds,n);
    	//printf("%d",n);
    	free(ds);
    
    
    	return 0;
    }

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    872

    Bạn chèn thêm một lệnh đóng tập tin ở cuối hàm nhap xem sao. Mà nên đưa lệnh này vào cuối khối if nhé, lệnh đóng tập tin trong hàm sum cũng vậy
    Đã được chỉnh sửa lần cuối bởi MHoang : 27-11-2018 lúc 09:27 PM.

  3. #3
    Ngày gia nhập
    04 2017
    Bài viết
    1

    Vẫn vậy bác ơi :(( nhưng em phát hiện ra 1 điều là nếu e bỏ lệnh free() trong hàm main và bỏ cả fclose() trong hàm nhap() lẫn hàm sum() thì nó chạy bình thường bác ạ, không bị 1 lỗi gì luôn. Không hiểu sao lại thế nữa :((

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    532

    Mình thử code trên khoảng vài chục lần mới bị lỗi 1 lần (treo chương trình). Có lẽ là do mình chạy dồn dập nhiều lần quá nhanh, chương trình cố gắng mở file khi chưa kịp đóng file.

    Biên dịch trong môi trường Code::Blocks.
    Đã được chỉnh sửa lần cuối bởi Ada : 27-11-2018 lúc 11:35 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn