hello các bạn , mình có làm một bài tập như thế này
Viết chương trình thực hiện các yêu cầu:
• Mở tập tin mới và nhập vào một số mẫu tin. Mỗi mẫu tin bao gồm các trường: họ tên, tuổi, lương. Quá trình nhập dữ liệu kết thúc khi họ tên nhập vào là rỗng.
• Thêm dữ liệu vào tập tin.
• Mở tập tin để đọc và hiển thị ra màn hình nội dung tập tin.
Đây là code của mình
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxten 30
#define maxfile 11
struct hsnv
{
char hoten[maxten+1];
int tuoi;
int luong;
} hoso;
void hienthi(struct hsnv *,int);
void nhap();
void indanhsach();
void them();
char ten_file[maxfile+1];
FILE *fi;
int main()
{
nhap();
indanhsach();
them();
indanhsach();
return 0;
}
void nhap()
{
int i,n;
printf("Nhap ten file\n");
gets(ten_file);
if((fi = fopen(ten_file,"wb"))==NULL)
{
printf("Errol , file chua duoc tao\n");
exit(1);
}
printf("\nNhap so lieu , muon dung lai nhan Enter khi nhap ten\n");
n = 0;
do
{
printf("\nNhap ten: ");
fflush(stdin);
gets(hoso.hoten);
if(strlen(hoso.hoten) ==0) break;
n++;
printf("\nNhap tuoi: ");
fflush(stdin);
scanf("%d",&hoso.tuoi);
printf("\nNhap luong: ");
fflush(stdin);
scanf("%d",&hoso.luong);
getchar();
printf("\n");
fwrite(&hoso,sizeof(hoso),1,fi);
}while(1);
fclose(fi);
printf("Ket thuc viec doc file ta co %d phan tu(nguoi)\n",n);
}
void indanhsach()
{
int n;
do
{
printf("\nBat dau doc file, nhap ten file: ");
gets(ten_file);
if((fi = fopen(ten_file,"rb"))==0)
{
printf("Errol, nhap lai ten\n");
}
}while(!fi);
n = 1;
while(fread(&hoso,sizeof(hoso),1,fi))
{
hienthi(&hoso,n++);
}
fclose(fi);
printf("\nDoc xong danh sach trong file\n");
}
void hienthi(struct hsnv *hoso,int so_file)
{
int i;
printf("\nSo ho so: %d",so_file);
printf("\nTen: %s\n",hoso->hoten);
printf("\nTuoi: %d\n",hoso->tuoi);
printf("\nLuong: %d\n",hoso->luong);
}
void them()
{
int n;
do
{
printf("\nNhap ten file can them: ");
gets(ten_file);
if((fi = fopen(ten_file,"ab"))==0)
{
printf("Errol, Nhap lai ten file: ");
}
}while(!fi);
do
{
printf("\nNhap ten: ");
fflush(stdin);
gets(hoso.hoten);
if(strlen(hoso.hoten)==0)
break;
n++;
printf("\nNhap tuoi: ");
fflush(stdin);
scanf("%d",&hoso.tuoi);
printf("\nNhap luong: ");
fflush(stdin);
scanf("%d",&hoso.luong);
getchar();
printf("\n");
fwrite(&hoso,sizeof(hoso),1,fi);
}while(1);
fclose(fi);
printf("\nKet thuc viec them du lieu vao cuoi file");
}
code thì không sai gì cả, vẫn hiển thị nhập xuất kết quả bình thường, nhưng mà mình gặp lỗi như thế này , khi mà mình mở lại cái file thư mục mà mình đã tạo thì nó không hiển thị giống như mình mong muốn
thay vì nó sẽ hiện tên ,tuổi và lương và sẽ xuống dòng với mỗi phần tử, thì nó lại hiện như thế này.
đó là những nội dung trong file của mình, nó hiện lung tung hết, mình không biết nó bị lỗi gì, mong các bạn giúp mình sữa lỗi này với, xin cảm ơn trước

có “lỗi” là do bạn dùng Notepad mở file đó lên, bạn làm vậy chi?
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?