thieumao

[Cau 2 De 1] Nhap Xuat Sua file trong C

Jun 23rd, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define fbin "thieumao.txt"
  5.  
  6. typedef struct DanhSach{
  7.     char Ho_ten[50], Que[50];
  8.     float Diem_TB;
  9. } DS;
  10.  
  11. void input(DS sv[], int *n);
  12. void writeBin(DS sv[], int n);
  13. void readBin(DS sv[], int *n);
  14.  
  15. int main() {
  16.     DS sv[50];
  17.     int n, i;
  18.  
  19.     int select;
  20.     do {
  21.         printf("1: Nhap\n2: Xuat\n3: Sua\n4: Thoat\n");
  22.         printf("Enter the number to work: ");
  23.         scanf("%d", &select);
  24.         switch(select){
  25.             case 1: {
  26.                 printf("DOC\n");
  27.                 input(sv, &n);
  28.                 writeBin(sv, n);
  29.                 break;
  30.             }
  31.             case 2: {
  32.                 printf("XUAT\n");
  33.                 readBin(sv, &n);
  34.                 output(sv, n);
  35.                 break;
  36.             }
  37.             case 3: {
  38.                 printf("SUA\n");
  39.                 readBin(sv, &n);
  40.                 int i;
  41.                 printf("Nhap STT sinh vien can sua Diem_TB: ");
  42.                 scanf("%d",&i);
  43.                 printf("Nhap Diem_TB: ");
  44.                 scanf("%1f", &sv[i-1].Diem_TB);
  45.                 writeBin(sv, n);
  46.                 printf("\nSAU KHI SUA:\n");
  47.                 output(sv, n);
  48.                 break;
  49.             }
  50.             case 4: return 0;
  51.             default : printf("LOI\n"); break;
  52.         }
  53.     }
  54.     while (select != 4);
  55.     return 0;
  56. }
  57.  
  58. void input(DS sv[], int *n){
  59.     int i;
  60.     char s[50];
  61.     printf("Nhap so luong sinh vien: ");
  62.     scanf("%d", n);
  63.     gets(s);
  64.     printf("\n");
  65.     for (i = 0; i < (*n); i++){
  66.         printf("\nNhap sinh vien thu %d \n",i+1);
  67.         printf("\tHo ten: ");
  68.         gets(sv[i].Ho_ten);
  69.         printf("\tQue: ");
  70.         gets(sv[i].Que);
  71.         printf("\tDiem TB: ");
  72.         scanf("%1f", &sv[i].Diem_TB);
  73.         gets(s);
  74.     }
  75. }
  76.  
  77. void writeBin(DS sv[], int n){
  78.     FILE *f = fopen(fbin,"wb");;
  79.     int i;
  80.     if(f==NULL) printf("Error load file");
  81.     else fwrite(sv,sizeof(DS),n,f);
  82.     fclose(f);
  83. }
  84.  
  85. void readBin(DS sv[], int *n){
  86.     FILE *f = fopen(fbin,"rb");
  87.     fseek(f,0,SEEK_END); //Nhay ve cuoi file, di chuyen di 0 vi tri
  88.     (*n) = (ftell(f)+1)/sizeof(DS); //ftell(); tra ve vi tri hien tai cua con tro
  89.     // SEEK_CUR: di chuyen bat dau tu vi tri hien tai cua con tro, chi dung trong fseek()
  90.     fseek(f,0,SEEK_SET); //Nhay ve dau file, di chuyen di 0 vi tri
  91.     fread(sv,sizeof(DS),(*n),f);
  92.     fclose(f);
  93. }
  94.  
  95.     char Ho_ten[50], Que[50];
  96.     float Diem_TB;
  97.  
  98. void output(DS sv[], int n){
  99.     int i;
  100.     printf("%-10s %-10s %-15s %-10s\n", "STT", "Ho_ten", "Que",  "Diem_TB");
  101.     for (i = 0; i < n; i++)
  102.         printf("%-10d %-10s %-15s %-10.2lf\n", i + 1, sv[i].Ho_ten, sv[i].Que, sv[i].Diem_TB);
  103. }
Advertisement
Add Comment
Please, Sign In to add comment