鱼C论坛

 找回密码
 立即注册
查看: 885|回复: 3

[已解决]能帮我看看这个程序哪里出错了吗

[复制链接]
发表于 2021-2-7 15:35:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

#define MAX_LAYER_NUM 16
#define ROOM_IN_ONE_LAYER 3
int gbRoomState[MAX_LAYER_NUM][ROOM_IN_ONE_LAYER];
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[LayerValue][RoomValue])
    {
        printf("ok, checkin success. \n");
        gbRoomState[LayerValue][RoomValue] = 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("CheckOutFunc  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[LayerValue][RoomValue])
        {
                printf("ok, checkout success. \n");
            gbRoomState[LayerValue][RoomValue] = 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:51:14
本帖最后由 一叶枫残 于 2021-2-7 16:08 编辑

看到void main()主函数里面的char input[],定义字符串中括号里面一定要有值,看你程序输入的规模不大,改成char input[20]就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。
加油!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-7 15:50:51 | 显示全部楼层
input == "checkout"   一打眼就看到这个了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 15:51:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 一叶枫残 于 2021-2-7 16:08 编辑

看到void main()主函数里面的char input[],定义字符串中括号里面一定要有值,看你程序输入的规模不大,改成char input[20]就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。
加油!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 16:01:54 | 显示全部楼层
1、char input[]; 是不完整的数据类型,这是不允许的
2、   if (input == "checkin")    // input 是数组名,它就是一个一个地址,不可能等于一个字符串
        {
                CheckInFunc();
        }
        else if (input == "checkout")   // input 是数组名,它就是一个一个地址,不可能等于一个字符串
        {
                CheckOutFunc();
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 04:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表