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

Đề tài: sửa giùm mình bài này.

  1. #1
    Ngày gia nhập
    03 2007
    Bài viết
    10

    Smile sửa giùm mình bài này.

    Các bạn xem lại bài mình làm nhé:"tạo 1 FILE nhap danh sách sinh vien,in danh sách sinh vien ", ko bít mình sai cái gì trong cái hàm tạo ten file, tạo xong mình thoát ra tìm cái tên file này mở thử bằng notepad chả có danh sách ghi vào file cả,nên trong bài ko in ra được danh sách sinh viên, các bạn sửa lỗi giùm mình nhé .

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    
    typedef struct
    {
    	char hoten[15];
    	char masv[4];
    	char ngsinh[10];
    	float diem;
    	int gt;
    }sv;
    void nhapsv(sv &x);
    void insv(sv x);
    void nhapds(int &n,sv *a);
    void inds(int n,sv *a);
    void taofile(char *tenfile);
    void docfile(char *tenfile);
    
    
    void main()
    {     clrscr();
           sv x;
           sv *a;
           int n;
           char *tenfile;
        //	nhapds(n,a);
        //  printf ("\n Ma_sv  Ho&Ten           Ngsinh       Diem  Gioi_tinh");
        //  inds(n,a);
    	printf ("\n nhap ten file:");
    	gets(tenfile);
    	taofile(tenfile);
    	docfile(tenfile);
    
    
    
    getch();
    }
    void nhapsv(sv &x)
    {
    	fflush(stdin);
    	float t;
    	printf ("\n nhap ma_sv: ");
    	gets(x.masv);
    	printf ("\n nhap ho_ten_sv: ");
    	gets(x.hoten);
    	fflush(stdin);
    	printf ("\n nhap ngsinh:");
    	gets(x.ngsinh);
    	int d;
    	printf ("\n nhap gt: ");
    	scanf ("%d",&d);
    	x.gt=d;
    	printf ("\n nhap diem: ");
    	scanf ("%f",&t);
    	x.diem=t;
    }
    void insv(sv x)
    {
    	printf ("\n %-5s  %-15s  %-10s   %-.2f",x.masv,x.hoten,x.ngsinh,x.diem);
    	(x.gt==1)?printf ("   Nam") :printf ("   Nu");
    }
    void nhapds(int &n,sv *a)
    {
    	int i;
    	printf ("\n nhap si so sv: ");
    	scanf ("%d",&n);
    	for (i=0;i<n;i++)
    	{
    		nhapsv(a[i]);
    	}
    }
    void inds(int n,sv a[50])
    {
    	int i;
    	for (i=0;i<n;i++)
    	{
    		insv(a[i]);
    	}
    }
    void taofile(char *tenfile)
    {
    	FILE *f;
    	sv *u;
    	int n;
    	f=fopen(tenfile,"wt");
    	if (f!=NULL)
    	{
    		fflush(stdin);
    		nhapds(n,u);
    		fwrite(u,sizeof(sv),n,f);
    
    	fclose(f);
    	}
    	else
    
    		printf ("\n ko mo duoc file:");
    
    }
    void docfile(char *tenfile)
    {
    	FILE *f;
    	int n;
    	sv *u;
    	f=fopen(tenfile,"rt");
    	if (f!=NULL)
    	{
    
    		fread(&u,sizeof(sv),n,f);
    		inds(n,u);
    
    
    	fclose(f);
    	}
    	else
    	printf ("\n ko mo duoc file");
    
    }
    <Cảnh cáo -> Yêu cầu cho mã nguồn vào trong thẻ CODE>
    Đã được chỉnh sửa lần cuối bởi dragoncl12 : 06-10-2007 lúc 12:07 AM.

  2. #2
    Ngày gia nhập
    12 2006
    Bài viết
    72

    Trích dẫn Nguyên bản được gửi bởi dragoncl12 Xem bài viết
    Các bạn xem lại bài mình làm nhé:"tạo 1 FILE nhap danh sách sinh vien,in danh sách sinh vien ", ko bít mình sai cái gì trong cái hàm tạo ten file, tạo xong mình thoát ra tìm cái tên file này mở thử bằng notepad chả có danh sách ghi vào file cả,nên trong bài ko in ra được danh sách sinh viên, các bạn sửa lỗi giùm mình nhé .
    Code:
    #include <stdio.h>
    #include <conio.h>
    
    
    typedef struct
    {
    	char hoten[15];
    	char masv[4];
    	char ngsinh[10];
    	float diem;
    	int gt;
    }sv;
    void nhapsv(sv &x);
    void insv(sv x);
    void nhapds(int &n,sv *a);
    void inds(int n,sv *a);
    void taofile(char *tenfile);
    void docfile(char *tenfile);
    
    
    void main()
    {     clrscr();
           sv x;
           sv *a;
           int n;
           char *tenfile;
        //	nhapds(n,a);
        //  printf ("\n Ma_sv  Ho&Ten           Ngsinh       Diem  Gioi_tinh");
        //  inds(n,a);
    	printf ("\n nhap ten file:");
    	gets(tenfile);
    	taofile(tenfile);
    	docfile(tenfile);
    
    
    
    getch();
    }
    void nhapsv(sv &x)
    {
    	fflush(stdin);
    	float t;
    	printf ("\n nhap ma_sv: ");
    	gets(x.masv);
    	printf ("\n nhap ho_ten_sv: ");
    	gets(x.hoten);
    	fflush(stdin);
    	printf ("\n nhap ngsinh:");
    	gets(x.ngsinh);
    	int d;
    	printf ("\n nhap gt: ");
    	scanf ("%d",&d);
    	x.gt=d;
    	printf ("\n nhap diem: ");
    	scanf ("%f",&t);
    	x.diem=t;
    }
    void insv(sv x)
    {
    	printf ("\n %-5s  %-15s  %-10s   %-.2f",x.masv,x.hoten,x.ngsinh,x.diem);
    	(x.gt==1)?printf ("   Nam") :printf ("   Nu");
    }
    void nhapds(int &n,sv *a)
    {
    	int i;
    	printf ("\n nhap si so sv: ");
    	scanf ("%d",&n);
    	for (i=0;i<n;i++)
    	{
    		nhapsv(a[i]);
    	}
    }
    void inds(int n,sv a[50])
    {
    	int i;
    	for (i=0;i<n;i++)
    	{
    		insv(a[i]);
    	}
    }
    void taofile(char *tenfile)
    {
    	FILE *f;
    	sv *u;
    	int n;
    	f=fopen(tenfile,"wt");  //ban mo file de ghi theo kieu text
    	if (f!=NULL)
    	{
    		fflush(stdin);
    		nhapds(n,u);
    		fwrite(u,sizeof(sv),n,f); //nhung lai ghi theo kieu nhi phan
    
    	fclose(f);
    	}
    	else
    
    		printf ("\n ko mo duoc file:");
    
    }
    void docfile(char *tenfile)
    {
    	FILE *f;
    	int n;
    	sv *u;
    	f=fopen(tenfile,"rt"); //Mo file theo kieu text
    	if (f!=NULL)
    	{
    
    		fread(&u,sizeof(sv),n,f);//Nhung doc file theo kieu nhi phan		inds(n,u);
    
    
    	fclose(f);
    	}
    	else
    	printf ("\n ko mo duoc file");
    }
    Chúc bạn học tốt!

  3. #3
    Ngày gia nhập
    03 2007
    Bài viết
    10

    này bạn mình sửa lại thành "wb" lúc cho chạy thì nó bị văng ra ngoài luôn đó bạn đã thử chạy bài của mình chưa.

  4. #4
    Ngày gia nhập
    12 2006
    Bài viết
    72

    Bài của bạn nếu phân tích ra thì hơi rắc rối vì sai khá nhiều,mình đã chạy thử và có hiện tượng như bạn nói và mình cũng chưa hiểu tại sao,mình có một bài mẫu,bạn chạy thử nếu có vấn đề gì khó hiểu thì liên hệ với mình qua win.amuser@yahoo.com,minh sẽ cố gắng giải thích cặn kẽ cho bạn hiểu va so sánh giữa 2 bài với nhau xem thế nào nhé:
    Code:
    //Bai tap nhap mot cau truc sinh vien,ghi cau truc do len file==>doc
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<io.h>
    struct sinhvien
     {
      char hoten[25];
      float t,l,h;
     };
    sinhvien sv[100]; int n;float sobyte; //Mang sinh vien,so sinh vien va so byte cua tap tin la toan cuc
    void nhapsv(sinhvien sv[],int n)  //Nhap danh sach sinh vien
     {
      float t,l,h;clrscr();
      for(int i=0;i<n;i++)
       {
        fflush(stdin);
        printf("\n Sinh vien thu %d: ",i+1);
        printf("\n  *Ho va ten: ");gets(sv[i].hoten);
        printf("\n  *Diem toan,li,hoa: ");scanf("%f%f%f",&t,&l,&h);
        sv[i].t=t;sv[i].l=l;sv[i].h=h;
       }
     }
    void xuatsv(sinhvien sv[],int n)
     {
       printf("\n %3d %25s %5s %5s %5s ","stt","ho va ten","toan","li","hoa");
       for(int i=0;i<n;i++)
         printf("\n %3d %25s %5.1f %5.1f %5.1f ",i+1,sv[i].hoten,sv[i].t,sv[i].l,sv[i].h);
     }
    
    
    void ghi()// ghi danh sach sinh vien vua nhap len file
     {
      printf("\n Nhap so sinh vien can xu li: ");scanf("%d",&n);
      nhapsv(sv,n);
      FILE *fp; char name[20],lc;
      fflush(stdin);
      nhaplai:clrscr();printf("\n Nhap ten file can luu: ");gets(name);
      fp=fopen(name,"wb");
      if(fp==NULL)
       {
        printf("\n Loi tao file,ban co muon nhap lai khong(c/k)? ");
        scanf("%c",&lc);
        lc=getch();
        if(lc=='c'||lc=='C') goto nhaplai;
        exit(0);
       }
      for(int i=0;i<n;i++)
       fwrite(&sv[i],sizeof(sv[i]),1,fp);
      printf("\n DA GHI XONG"); getch();
      fclose(fp);
     }
    void doc() //Doc du lieu
     {
      FILE *fp;char name[20],lc; int i;
      nhaplai1:clrscr();fflush(stdin);printf("\n Nhap ten file can mo: ");gets(name);
      fp=fopen(name,"rb");
      if(fp==NULL)
       {
        printf("\n Loi doc file,ban co muon nhap lai khong(c/k)? ");
        scanf("%c",&lc);
        lc=getch();
        if(lc=='c'||lc=='C') goto nhaplai1;
        exit(0);
       }
      printf("\n Danh sach sinh vien");
      printf("\n %3d %25s %5s %5s %5s ","stt","ho va ten","toan","li","hoa");
      i=0;
      while(!feof(fp))
        {
         fread(&sv,sizeof(sv),1,fp);
         printf("\n %3d %25s %5.1f %5.1f %5.1f ",i+1,sv.hoten,sv.t,sv.l,sv.h);
         i++;
        }
      getch();
     }
    void menu()
     {
      int i;
      while(1)
       {
        clrscr();
        printf("\n 1. Nhap");
        printf("\n 2. Xuat");
        printf("\n 0. Thoat");
        scanf("%d",&i);
        switch(i)
         {
          case 1:clrscr();ghi();break;
          case 2:clrscr();doc();break;
          case 0:return;
         }
       }
    }
    void main()
     {
      clrscr();
      menu();
     }

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Code:
    char *tenfile;
    printf ("\n nhap ten file:");
    gets(tenfile);
    Mới nhìn vào hàm main đã thấy cái lỗi to đùng này rồi, không chết mới lạ, vùng nhớ cấp cho pointer tenfile lấy đâu ra.
    Nếu cậu dùng VC++, có thể dùng hàm _alloca để cấp phát memory cho pointer tên file trên stack của hàm, không cần free vì khi hàm return, stack unwind.

Các đề tài tương tự

  1. các bạn sửa giùm lỗi này hộ tớ với!
    Gửi bởi mr.cuong_tq trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 01-10-2012, 06:36 PM
  2. Fix lỗi giùm em với ạ
    Gửi bởi anhtnse02984 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 11
    Bài viết cuối: 10-08-2012, 02:19 PM
  3. Turbo C Lỗi Mọi người sữa giùm mình lỗi ni
    Gửi bởi binhlama00 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 01-03-2012, 08:56 PM
  4. mấy anh sửa lỗi này giùm em nha
    Gửi bởi lu_ngovan trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-05-2010, 04:17 PM
  5. sửa giùm em bài sắp xếp
    Gửi bởi tonggiavinh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 19-01-2008, 09:42 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