C语言 我不断收到分段错误,但我不确定问题出在哪里

hc2pp10m  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(95)
  • context:* I have this college assignment I should something like rush hour game..我有一个停车场,里面有汽车,有一辆特定的车(用 * 表示),应该离开停车场(出口在中间线最左边的列)。我应该移动这些车,然后把它弄出来。例如,下面是一个给定的停车场:
|1||1|| || || |
| || ||2||2||2|
| || ||*||*||*|
|3||3|| || || |
|3||3|| || || |

首先,我需要让用户选择一辆要移动的汽车,检查它是否存在于停车场中,如果不存在,则再次让他选择一辆汽车。

char SelectCar(char lot[MAX_LOT_LENGTH][MAX_LOT_LENGTH], int Length){
    char car;
    bool exists = false;
    printf("Enter the car you want to move:\n");
    scanf("%c",&car);
    for (int i = 0; i< Length; i++){
        for (int j = 0; j<Length; j++){
            if (lot[i][j] == car) {
                exists = true;
                
            }
        }
    }
    
    if(!exists) {
        printf("Invalid car id! enter again:\n");
        car = SelectCar(lot,Length);
    }
    printf("car selected\n");
    return car;
}

当我运行代码时,它跳过了scanf函数(它甚至不要求输入汽车),所以当它进入for循环时,"car"甚至不存在于lot中,所以它重新进入SelectCar函数,当它到达scanf(第二次)时,它只是崩溃并给我这个错误”:* 一米五分一秒 *
我不知道该怎么办(我甚至不明白问题出在哪里)

  • 注:批次和长度由用户定义和接收。*
j9per5c4

j9per5c41#

我不知道该怎么办
保存时间并启用所有编译器警告,以便快速查看char car; ... scanf("%d",car);的问题
scanf()中的"%d"需要指向int的匹配指针。

相关问题