电梯程序有错误(分段错误)

时间:2014-09-28 11:46:34

标签: c

我是C语言的新手,我的代码有问题。 (对不起我的英语不好) 我正在尝试制作电梯程序但是当我编译它(gcc)时,我有一个Segmentation故障错误。这是我的代码。

    #include <stdio.h>

/* Elevator Program */


char elevArr[11]={0};
int pressFloor[3][11]={0}, q=0;

void PrintFloor() { // Printing floors status
    for(int i=9; i>=0; i--) {
        printf("%3d %3c\n", i+1, elevArr[i]);
    }
    putchar('\n');
}

void InputFloor() { // Place what floor's button is pressed
    int floor;
    printf("Enter (floor, Up/down): ");
    scanf("%d", &floor);
    pressFloor[0][q]=floor;
}

void UpDownFloor() { // Button for Up Down
    int ud;
    scanf("%d", ud);
    pressFloor[1][q]=ud;
}

int main() { // main module
    bool Isfirst=true; // if the program is first runned
    printf("\nElevator Program\nCreated by JSChang\nTo exit type (0, 0)\n\n");
    elevArr[0]='E';
    while(1) {
        if(Isfirst==true) {
            PrintFloor();   
            Isfirst=false;
        } else {
            q=0;
            for(int i=0; i<10; i++) {
                InputFloor();
                UpDownFloor();
                if(pressFloor[0][i]==0 && pressFloor[1][i]==0)
                        break;
            }

        }
    }
    return 0;
}

非常感谢!

2 个答案:

答案 0 :(得分:1)

启用编译器警告并修复所有警告:

例如:

int ud;
scanf("%d", ud);

这是错误的,scanf参数必须是&ud而不是ud

答案 1 :(得分:0)

尝试通过编写#include<stdbool.h>来包含stdbool标头,并在函数UpDownFloor中使用“&amp;”之前在scanf中为scanf("%d",&ud);