30/09/2018, 19:47
Hỏi về File trong C
Mọi người cho em hỏi em có 1 đoạn code dùng để đọc ghi lên File dữ liệu như sau nhưng khi cho in thì nó lại bị lỗi mấy anh chị có thể xem giúp em được không ?
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
typedef struct {
char ht[30];
char MSSV[10],gt[5];
int diem;
}Danhsach;
Danhsach *hs;
int n;
void nhap();
void in();
void timkiem(Danhsach s);
//
int main()
{
FILE *f;
f = fopen("Danhsach.txt","rb");
fseek(f,0,2);
n = ftell(f)/sizeof(Danhsach);
fclose(f);
char key;
printf(" Chuong trinh quan ly sinh vien ");
do
{
system("cls");
printf("
1. Nhap thong tin .");
printf("
2. In danh sach thong tin .");
printf("
3. Sap xep danh sach .");
printf("
4. Tim kiem thong tin .");
printf("
5. Thoat khoi chuong trinh.");
printf("
Chon 1 chuc nang muon su dung : ");
key = getch();
if(key=='1')
{ system("cls");
nhap();
}
else
{
if(key=='2')
{
system("cls");
in();
}
else
{
if(key==3)
{// sapxep();
system("cls");
}
else
{
if(key==4)
{
system("cls");
printf("
Nhap vao thong tin hoc sinh muon tim");
Danhsach t;
printf("
Nhap ho ten hoc sinh muon tim : %s",t.ht);
fflush(stdin);
gets(t.ht);
printf("
Nhap vao MSSV : %d ",t.MSSV);
scanf("%s",t.MSSV);
timkiem(t);
}
else
{
cout<<"Ban that su muon thoat chu ???? Press Y/N?";
key = getch();
key = toupper(key);
if(key=='Y') return 1 ;
}
}
}
}
}while(1);
return 1;
}
void nhap()
{ char s[30];
FILE *f;
f= fopen("Danhsach.txt","wb");
int m,i;
printf("
Nhap vao so luong hoc sinh muon nhap (hoac them ) : ");
scanf("%d",&m);
if(n==0) hs = (Danhsach *)malloc(m*sizeof(Danhsach));
else hs = (Danhsach *)malloc((m+n)*sizeof(Danhsach));
for( i=0;i<m;i++)
{
printf("
Vao ten hoc sinh thu %d :",n+i+1);
fflush(stdin);
gets(s);
strcpy(hs[n+i].ht,s);
printf("
Vao MSSV cua hoc sinh thu %d :",n+i+1);
fflush(stdin);
gets(s);
strcpy(hs[n+i].MSSV,s);
printf("
Vao gioi tinh cua hoc sinh thu %d :",n+i+1);
fflush(stdin);
gets(s);
strcpy(hs[n+i].gt,s);
printf("
Vao diem cua sinh vien thu %d :",n+i+1);
scanf("%d",&hs[n+i].diem);
}
fwrite(hs,sizeof(Danhsach),n,f);
fclose(f);
getch();
}
void in()
{ Danhsach hsv;
FILE *f;
f= fopen("Danhsach.txt","rb");
rewind(f);
int i=0;
printf("----------------------------------------------------------------------------------------------------------------
");
printf("---MSSV----|--------------Ho ten----------------|----Gioi tinh----|-----Diem----|");
fread(&hsv,sizeof(Danhsach),1,f);
while(!feof(f))
{
printf("
%s %s %s %d",hsv.MSSV,hsv.ht,hsv.gt,hsv.diem);
fread(&hsv,sizeof(Danhsach),1,f);
}
fclose(f);
printf("Nhap phim bat ky de ket thuc :");
getch();
}
Bài liên quan
Thiếu #include thì phải