Bài em có các lỗi sau:
- Xuất ra file thì không xuất được hệ số lương(heSL)
- Khi đọc file văn bản rồi in ra thì in ra không đúng
- khi đọc file nhị phân rồi in ra thì ra linh tinh
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct NhanSu{ char maNV[20],hoTen[30],chucVu[30]; float heSL[5];
};
void nhapNhanSu();
void xuatNhanSuFileText();
void xuatNhanSuFileBinary();
void docNhanSuFileText();
void docNhanSuFileBinary();
NhanSu ns[1000];
FILE *f;
int i,n;
void nhapNhanSu(){
printf("Nhap so nhan su:"); scanf("%d",&n);
printf("Nhap thong tin nhan su\n");
for(i=1;i<=n;i++)
{
printf("\tNhap thong tin cho nhan su thu %d\n",i);
printf("Ma nhan vien:"); fflush(stdin);
gets (ns[i].maNV);
printf("Ho va ten:"); fflush(stdin);
gets (ns[i].hoTen);
printf("Chuc vu:"); fflush (stdin);
gets (ns[i].chucVu);
printf("He so luong:");
scanf("%f",&ns[i].heSL);
}
}
void xuatNhanSuFileText(){
f = fopen("NhanSu.txt","w");
for(i=1;i<=n;i++)
{
fprintf(f,"%s\n%s\n%s\n%.2f\n",ns[i].maNV,ns[i].hoTen,ns[i].chucVu,ns[i].heSL);
}
fclose(f);
}
void xuatNhanSuFileBinary(){
f = fopen("NhanSu.dat","wb");
for(i=1;i<=n;i++)
{
fwrite(ns[i].maNV,sizeof(char),1,f);
fwrite(ns[i].hoTen,sizeof(char),1,f);
fwrite(ns[i].chucVu,sizeof(char),1,f);
fwrite(ns[i].heSL,sizeof(float),1,f);
}
fclose(f);
}
void docNhanSuFileText(){
f = fopen("NhanSu.txt","r");
fscanf(f,"%d",&n);
printf("So nhan su:%d nguoi\n",n);
for(i=1;i<=n;i++){
fgets(ns[i].maNV,20,f);
fgets(ns[i].hoTen,30,f);
fgets(ns[i].chucVu,30,f);
fscanf(f,"%.2f",&ns[i].heSL);
}
for(i=1;i<=n;i++){
printf("\tNhan su thu %d\n",i);
printf("Ma nhan vien:%s",ns[i].maNV);
printf("Ho va ten:%s",ns[i].hoTen);
printf("Chuc vu:%s",ns[i].chucVu);
printf("He so luong:%.2f",ns[i].heSL);
printf("\n");
}
printf("\n");
}
void docNhanSuFileBinary(){
f = fopen("NhanSu.dat","rb");
fread(&n,sizeof(int),1,f);
printf("So nhan su:%d nguoi\n",n);
for(i=1;i<=n;i++){
fread(&ns[i].maNV,sizeof(char),1,f);
fread(&ns[i].hoTen,sizeof(char),1,f);
fread(&ns[i].chucVu,sizeof(float),1,f);
fread(&ns[i].heSL,sizeof(float),1,f);
}
for(i=1;i<=n;i++){
printf("\tNhan su thu %d\n",i);
printf("Ma nhan vien:%s",ns[i].maNV);
printf("Ho va ten:%s",ns[i].hoTen);
printf("Chuc vu:%s",ns[i].chucVu);
printf("He so luong:%.2f",ns[i].heSL);
}
printf("\n");
}
int main(){
int chon,flag=0;
do{
printf("1.Nhap day nhan su tu ban phim\n");
printf("2.Xuat day nhan su ra file van ban\n");
printf("3.Xuat day nhan su ra file nhi phan\n");
printf("4.Doc day nhan su tu file van ban xuat ra man hinh\n");
printf("5.Doc day nhan su tu file nhi phan xuat ra man hinh\n");
printf("6.Thoat\n");
printf("Ban chon:"); scanf("%d",&chon);
if(chon==1){
nhapNhanSu();
flag=1;
}
if(chon==2){
if(flag==1) xuatNhanSuFileText();
else printf("Moi ban chon muc 1 truoc\n");
}
if(chon==3){
if(flag==1) xuatNhanSuFileBinary();
else printf("Moi ban chon muc 1 truoc\n");
}
if(chon==4){
if(flag==1) docNhanSuFileText();
else printf("Moi ban chon muc 1 truoc\n");
}
if(chon==5){
if(flag==1) docNhanSuFileBinary();
else printf("Moi ban chon muc 1 truoc\n");
}
}while(chon!=6);
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?