这啥这个代码编译没问题但只要一输入运行界面就会闪退

img

img

供参考:

void search_bykind(Equ stu[])
{
    int  i,m=0;
    char search[20],ch[2]="y";
    FILE *fp;
    //system("cls");
    if((fp=fopen("data.txt","r"))==NULL){
          printf("can not open file!\n");
          return;
    }
    while(1){
          if(fread(&stu[m],LEN,1,fp)!=1) break;
          m++;
    }
    fclose(fp);
    while(ch[0] == 'Y' || ch[0] == 'y'){
          system("cls"); 
          printf("\n请输入要查找的设备(编号 种类 名称 价格 购买日期 所属实验室【任选一项】):");
          scanf("%s",search);
          for(i=0;i<m;i++){
              if(strcmp(stu[i].num, search)==0 || strcmp(stu[i].kind, search)==0 ||
                 strcmp(stu[i].name,search)==0 || strcmp(stu[i].price,search)==0 ||
                 strcmp(stu[i].buy_time,search)==0||strcmp(stu[i].lab,search)==0 )
                 break;
          }
          if(i==m) printf("无想要查询的记录!\n");
          else{
                 printf("\n设备编号  设备种类  设备名称  价格  购买日期   所属实验室\n");
                 printf("%s      %s     %s    %s   %s   %s\n",stu[i].num,stu[i].kind,stu[i].name,
                                                            stu[i].price,stu[i].buy_time,stu[i].lab);
          }
          printf("继续查找下一个(y/n):");
          getchar();
          scanf("%s",ch);
    }
}

大概是你i定义的的int,输入的时候应该为%d

for循环的条件是j<n,而n=0;所以for循环一次也不会执行,直接跳过for循环了。 应该是n的值弄错了。