Code:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct tieutien
{
 char thu[10];
 float tienan;
 float tienxx;       
}tt;

FILE *f;
tt *p;
int i,j,n=0;
void nhap()
   {
           char ch;
    f=fopen("duocdi.txt","wb");
       if(f==NULL)
          {
          printf("Loi mo tep roi.");        
          exit(1);
          } 
    do{
    p= (tt *)realloc(p,(n+1)*sizeof(tt));
    printf("\nThu: "); fflush(stdin);
    gets(p[n].thu);
    printf("\nTien an: ");
    scanf("%f",&p[n].tienan);
    printf("\nTien xang xe: ");
    scanf("%f",&p[n].tienxx);       
    fwrite(&p[n],sizeof(tt),1,f);
    n=n+1;
    printf("\nBan muon nhap tiep khong? (c:k)");
    ch=getche();
    }while (ch=='c'||ch=='C');
    fclose(f);
   }

void hienthi()
   {

    f=fopen("duocdi.txt","rb");
       if(f==NULL)
          {
          printf("Loi mo tep roi.");        
          exit(1);
          } 
    
     p=(tt *)realloc(p,(n+1)*sizeof(tt));
     printf("Hien thi: ");
     for(i=0;i<=n;i++)
       {
        fread(&p[n],sizeof(tt),1,f);
        printf("\nThu:%s ",p[n].thu);
    printf("\nTien an: %2.1f",p[n].tienan);
    printf("\nTien xang xe:%2.1f ",p[n].tienxx);
       }
            fclose(f);
   }
main()
{
while(1)
 {
      char ch;
    printf("\nPHIM LUA CHON\n");
    printf("\n1. Nhap moi");
    //printf("\n2. Them");
    printf("\n3. Hien thi.");
    printf("\n0. Thoat.");
    ch=getche();
    switch (ch)
    {
    case '1': nhap(); break;
    case '3':hienthi();  break;     
    }
}  
getch();      
}

Các bạn cho mình nhận xét về đoạn code này và cho mình hỏi tại sao biến n không tăng giá trị?