Hỏi về truy xuất dữ liệu trong C

Em viết chương trình nhâp vào năm và sự kiện sau đó yêu cầu người dùng nhập năm vào để in ra sự kiện nhưng đang bị lỗi ạ, có thể cho em biết em đang bị lỗi ở đâu và cách sửa được không ạ ? em cảm ơn. Dưới là hình ảnh lỗi và code của em ạ…

#include <stdio.h>
void nhapdulieu()
{
  int nam;
  char sukien[100];
  int i=0;
  int nChoice;
  FILE *fp = fopen("sukienlichsu.txt","wb");
  if(fp!=NULL)
  {
   printf("Chu y: Nhap nam la 0 de dung nhap\n");
   while(nam>=0)
   {

      printf("Nhap nam: ");
      fflush(stdin);
      scanf("%d",&nam);
      fflush(stdin);
      if(nam==0) break;
      printf("Nhap su kien (mo ta ngan gon): ");
      fflush(stdin);
      gets(sukien);
      fseek(fp,nam*sizeof(int),SEEK_SET);
      fprintf(fp,"%d %s",nam,sukien);
   }
   fclose(fp);
  }
}
void timkiemdulieu()
{
  int nChoice,i,n;
  char sukien[100];
  printf("1.Tim kiem du lieu\n2.Thoat chuong trinh\n");
  scanf("%d",&nChoice);
  while(nChoice!=2)
  {
    FILE *f = fopen("sukienlichsu.txt","rb");
    printf("Nhap nam can tim: ");
    scanf("%d",&n);
    fflush(stdin);
    fseek(f,n*sizeof(int),SEEK_SET);
    fread(sukien,sizeof(sukien),1,f);
    printf("%s\n",sukien);
    printf("1.Tim kiem du lieu\n2.Thoat chuong trinh\n");
    scanf("%d",&nChoice);
    fflush(stdin);
    fclose(f);

  }
}
int main()
{
  nhapdulieu();
  timkiemdulieu();
  return 0;
}

Output

1. Tim kiem du lieu
2. Thoat chuong trinh
1
Nhap nam can tim: 1945

1945 Nan doi

1. Tim kiem du lieu
2. Thoat chuong trinh
1
Nhap nam can tim: 1979

1979 Chien tranh bien gioi

1. Tim kiem du lieu
2. Thoat chuong trinh
1
Nhap nam can tim: 2000

2000 Ra doi
ranh bien gioi

1. Tim kiem du lieu
2. Thoat chuong trinh


Lỗi gì? Ít nhất thì bạn cũng mô tả cái mà bạn gọi là “LỖI” chứ?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?