user-0 提问: 还是文件操作函数，但是是新问题，会有无效的参数类型

回复:
user: user-1
content: FIND()函数里，判断语句写成赋值语句；  //if(n=w_room[i].num)         if(n == w_room[i].num) 同理ROOMM函数里： //if(n=w_room[i].num)         if(n == w_room[i].num)  建议比对一下结构体成员，有些成员没有定义或者定义的名字和你的使用名字不对，这些都是基础的语法问题。  类型不匹配：比如下面的代码：  scanf("%d", &w_room[i].live);             printf("请输入入住时间：\n");             scanf("%d", &w_room[i].in);             printf("请输入离店时间：\n");             scanf("%d", &w_room[i].out); in，out都是数组，那么输入的格式这样肯定是有问题的。in，out都是数组名，再取&怎么理解呢。  代码里太多硬性代码，比如30,20，代码可读性很差，另外注意代码风格。 现将语法问题解决，然后在考虑逻辑；注意将警告也一并去掉，即使把error去掉了，但是有警告一样无法实现想要的功能。

user: user-2
content: 帮你改了程序错误，可以编译，逻辑错误没改，自己改改 #include<stdio.h>  #include<stdlib.h>  #define N 30 void main();   struct adm//顾客信息 {  char account[20];//账号  char secret[20];//密码  char name[20];//姓名  int id[19];//身份证号     char tel[20];//手机号码     int num;//正在住的房间 }w_adm[100];   struct selact  {     int room;     //房间号      int timein;   //年份月份    int timeout;  //年份月份      int money;    //所需要交的钱 }w_selact[100];        struct room//房间信息   { int num;//房号（101~110，201~210，301~310）  int kind;//单1，双2，大3 char tenant[20];//入住客户姓名 int live;//入住状态  int in[3];//入住时间  int out[3];//离店时间  int deposit;//所交押金  int money;//预计房费   }w_room[30];//前十个为单人间，中间十个为双人，最后十个为大床房  void FIND()//房间信息查询函数   { struct room w_room[30];  FILE *fpf;  int n,i;  int c;  printf("请输入你想要查询的房间号：\n");    scanf("%d",&n);  if((fpf=fopen("fangjianxinxi.txt","r+"))==NULL)  {  printf("找不到相应数据！"); exit(0);  }  for (i=0;i<30;i++)  {  if(n=w_room[i].num)  {  fscanf(fpf,"%d%d%s%d%d%d%d%d",&w_room[i].num,&w_room[i].kind,w_room[i].tenant,&w_room[i].live,&w_room[i].in,&w_room[i].out,&w_room[i].deposit,&w_room[i].money);  printf("房号：%d%d%s%d%d%d%d%d",w_room[i].num,w_room[i].kind,w_room[i].tenant,w_room[i].live,w_room[i].in,w_room[i].out,w_room[i].deposit,w_room[i].money);  break;  }  }  fclose(fpf);  printf("是否想要继续查询？\n1.继续\t2.返回\t3.退出\n");    scanf("%d",&c);  if (c==1) FIND();  else if(c==2) main();  else exit(0);  }   void ROOMM()//房间信息修改函数   { struct room w_room[30];   FILE *fpr;  int n,i;  int c;  printf("请输入要修改的房间号：\n");    scanf("%d",&n);  if((fpr=fopen("fangjianxinxi.txt","r+"))==NULL)  {  printf("找不到相应数据！"); exit(0);  }  for (i=0;i<30;i++)  {  if(n=w_room[i].num)  {  printf("请输入要修改的信息：\n");  printf("请输入房号：\n");  scanf("%d",&w_room[i].num);  printf("q请输入房间类型：\n");  scanf("%d",&w_room[i].kind);  printf("请输入顾客姓名：\n");  scanf("%s",w_room[i].tenant);  printf("请输入房间状态：\n");//  1代表有人  0代表没人   scanf("%d",&w_room[i].live);  printf("请输入入住时间：\n");  scanf("%d",&w_room[i].in);  printf("请输入离店时间：\n");  scanf("%d",&w_room[i].out);  printf("请输入所交押金：\n");  scanf("%d",&w_room[i].deposit);  printf("请输入预计房费：\n");  scanf("%d",&w_room[i].money);  fprintf(fpr,"%d%d%s%d%d%d%d%d",w_room[n].num,w_room[n].kind,w_room[n].tenant,w_room[n].live,w_room[n].in,w_room[n].out,w_room[n].deposit,w_room[n].money);  break;  }  }  fclose(fpr);  printf("是否继续修改？\n1.继续\t2.回到上一层\t3.退出系统\n");    scanf("%d",&c);  if (c==1) ROOMM();  else if(c==2) main();  else exit(0);  }   void checkin()                             //入住登记函数 { struct room w_room[30];   FILE *fp2,*fp1;      int kind,day,deposit,money,i=0,j=0;                  fp1=fopen("d:\\kcsj\\file\\data1.txt","a+");      fp2=fopen("d:\\kcsj\\file\\data2.txt","r+");      while(!feof(fp2))   {      fscanf(fp2,"%d%d%s%d",&w_room[i].num,&w_room[i].kind,w_room[i].tenant,&w_room[i].live);      fscanf(fp2,"%d%d%d%d",&w_room[i].in,&w_room[i].out,&w_room[i].deposit,&w_room[i].money);      i++;      }      printf("请选择你想要的房间种类：\n");      printf("1.单人房 1000￥/天\n");      printf("2.双人房 1000￥/天\n");      printf("3.大床房 1500￥/天\n");      scanf("%d",&kind);    //输入房间种类 while(kind!=1 && kind!=2 && kind!=3)          {          printf("请输入正确的房间种类(1,2,3):\n");          scanf("%d",&kind);          }                     printf("请输入住宿天数:\n");      scanf("%d",&day);                  switch(kind)  {  case 1:  for(j=0;j<10;j++)  {  if(w_room[j].live==0)  {  printf("您的房间号为：%d\n",w_room[j].num);  w_room[j].live=1;  break;   }   }  money=1000*day;   printf("您预计需要支付%d元:\n",money);  w_room[j].money=money;   deposit=200*day;  printf("请预交 %d 元押金:\n",deposit);  w_room[j].deposit=deposit;  break;   case 2:  for(j=10;j<20;j++)  {  if(w_room[j].live==0)  {  printf("您的房间号为：%d\n",w_room[j].num);  w_room[j].live=1;  break;   }   }  money=1000*day;   printf("您预计需要支付 %d 元:\n",money);  w_room[j].money=money;   deposit=200*day;  printf("请预交 %d 元押金:\n",deposit);  w_room[j].deposit=deposit;  break;  case 3:  for(j=20;j<30;j++)  {  if(w_room[j].live==0)  {  printf("您的房间号为：%d\n",w_room[j].num);  w_room[j].live=1;  break;   }   }  money=1500*day;   printf("您预计需要支付 %d 元\n",money);  w_room[j].money=money;   deposit=300*day;  printf("请预交 %d 元押金\n",deposit);  w_room[j].deposit=deposit;  break;     }   fp2=fopen("d:\\kcsj\\file\\data2.txt","w+");   for(j=0;j<i-1;j++)   {    fprintf(fp2,"%d %d %s %d ",w_room[j].num,w_room[j].kind,w_room[j].tenant,w_room[j].live);          fprintf(fp2,"%d %d %d %d ",w_room[j].in,w_room[j].out,w_room[j].deposit,w_room[j].money);   }    fclose(fp1);   fclose(fp2);  }   void main()  {  char m;  while(1)  {     printf("请选择你想要执行的操作：0，信息录入 \t1，查询 \t2，修改 \t3，退出\n");          scanf("%c",&m);     switch(m)     {     case '1':FIND();     break;     case '2':ROOMM();      break;     case '3':exit(0);     break;     case '0':checkin();     break;     }       getchar();  }  }