Bài 5.6: Viết chương trình tạo tệp dữ liệu “SACH.DAT” chứa bảng danh mục của n quyển sách và in kết quả ra màn hình. Bảng danh mục sách bao gồm các cột:
Tên, Năm, Tác giả, Giá, Loại.
Nhập vào: Tên, Năm, Tác giả, Giá.
Tính Loại theo công thức sau:
                        Loại = Cao       nếu     Tiền  >  50000
Loại = “TB”         nếu     20000<= Tiền <= 50000
Loại = “THAP”    nếu     Tiền < 20000.


//Câu 5.6:
#include <stdio.h>
#include <stdio_ext.h>
int main(void)
{
struct
{
char tenSach[30], tacGia[30], *loai;
int nam;
float gia;
}sach;

FILE *fp;
int n, i;

//Tao tep
fp = fopen("SACH.DAT","wb");
if(fp==NULL)
perror("Khong tao duoc tep SACH.DAT\n");
else
{
printf("Nhap so luong sach: ");
scanf("%d", &n);

printf("Nhap vao danh muc sach:");
for(i=0;i<n;i++)
{
printf("\nNhap danh muc sahc thu %d:\n", i+1);
printf("\tTen sach: ");__fpurge(stdin); gets(sach.tenSach);
printf("\tNam(yyyy): ");scanf("%d", &sach.nam);
printf("\tTac gia: "); __fpurge(stdin); gets(sach.tacGia);
printf("\tGia: ");scanf("%f", &sach.gia);

//tinh loai
if(sach.gia>50000)
sach.loai = "CAO";
else if(sach.gia>=20000)
sach.loai = "TB";
else
sach.loai ="THAP";

//Ghi du lieu vao tep
fwrite(&sach, sizeof(sach), 1, fp);
}
fclose(fp);
}

//doc tep
fp = fopen("SACH.DAT","rb");
if(fp==NULL)
perror("Khong mo duoc tep SACH.DAT!\n");
else
{
printf("\n\n---------------BANG DANH MUC SACH-----------------\n\n");
printf("Ten sach Nam Tac gia Gia Loai\n");
while(fread(&sach, sizeof(sach), 1, fp)>0)
printf("%-30s %-4d %-30s %-9.2f %-s\n",sach.tenSach,sach.nam, sach.tacGia,sach.gia, sach.loai);

fclose(fp);
}

return 0;
}
//===dinh nghia ham===
Coding: Hải Dớ