能帮我看看这个程序哪里出错了吗
#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!!");
}
}
input == "checkout" 一打眼就看到这个了 本帖最后由 一叶枫残 于 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。
加油!!! 1、char input[]; 是不完整的数据类型,这是不允许的
2、 if (input == "checkin") // input 是数组名,它就是一个一个地址,不可能等于一个字符串
{
CheckInFunc();
}
else if (input == "checkout") // input 是数组名,它就是一个一个地址,不可能等于一个字符串
{
CheckOutFunc();
}
页:
[1]