lcjlcj4 发表于 2021-2-7 15:35:30

能帮我看看这个程序哪里出错了吗

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAX_LAYER_NUM 16
#define ROOM_IN_ONE_LAYER 3
int gbRoomState;
int CheckInFunc()
{
int RoomValue;
int LayerValue;

printf("CheckInFunc IN\n");
scanf_s("%d,%d", &RoomValue, &LayerValue);

if( (RoomValue > 0 &&RoomValue <= ROOM_IN_ONE_LAYER)
    && (LayerValue > 0&& LayerValue <= MAX_LAYER_NUM))
{
    if(0 == gbRoomState)
    {
      printf("ok, checkin success. \n");
      gbRoomState = 1;
            
    }
    else
    {   
      printf("Room already used!\n");
      return -1;

    }
}
else
{
    printf("error roomvalue & layervalue\n");
}

printf("CheckInFunc Out\n");

return 0;
}




int CheckOutFunc()
{
int RoomValue;
int LayerValue;
printf("CheckOutFuncIN\n");
scanf_s("%d,%d", &RoomValue, &LayerValue);

if((RoomValue > 0&&RoomValue <= ROOM_IN_ONE_LAYER)&&(LayerValue > 0&&LayerValue <= MAX_LAYER_NUM))
        {
        if(0 == gbRoomState)
        {
                printf("ok, checkout success. \n");
            gbRoomState = 1;
        }
        else
        {   
                 printf("Room already used!\n");
                 return -1;
               
          }
    }
    else
      {
            printf("error roomvalue & layervalue\n");
      }
       printf("CheckOutFunc Out!");
       return 0;
}


void main ()
{   
       char input[];
      printf("*****RoomManagement*****:\n");
      printf("welcome to use!!\n");
      char str1[] = "checkin";
      char str2[] = "checkout";
      printf("Please make choice!(checkin or checkout)\n");
      scanf_s("%s",input);

      if(input == "checkin")
      {
            CheckInFunc();
      }
      else if(input == "checkout")
      {
            CheckOutFunc();
      }
      else
      {
            printf("input error!!");
    }
}

洋洋痒 发表于 2021-2-7 15:50:51

input == "checkout"   一打眼就看到这个了

一叶枫残 发表于 2021-2-7 15:51:14

本帖最后由 一叶枫残 于 2021-2-7 16:08 编辑

看到void main()主函数里面的char input[],定义字符串中括号里面一定要有值,看你程序输入的规模不大,改成char input就ok了
还有的是,下面的if条件要改为
if(strcmp(input , str1) == 0)                //这里的str1和下面的str2上面已经赋值为checkin 与 checkout,不用写成"checkin"与"checkout",当然也可以写成strcmp(input , "checkin") == 0,不强求
{
        CheckInFunc();
}
else if(strcmp(input , str2) == 0)
{
        CheckOutFunc();
}
比较字符串是否相等不能直接使用==,可以使用函数strcmp(),参数为两个字符串,当两个字符串相等时返回0。
加油!!!

风过无痕1989 发表于 2021-2-7 16:01:54

1、char input[]; 是不完整的数据类型,这是不允许的
2、   if (input == "checkin")    // input 是数组名,它就是一个一个地址,不可能等于一个字符串
        {
                CheckInFunc();
        }
        else if (input == "checkout")   // input 是数组名,它就是一个一个地址,不可能等于一个字符串
        {
                CheckOutFunc();
        }
页: [1]
查看完整版本: 能帮我看看这个程序哪里出错了吗