2014-09-28 58 views
-3

我是C語言新手,我的代碼有問題。 (對不起,我的英語) 我想製作一個電梯程序,但是當我編譯它(gcc)時,我有一個Segmentation fault錯誤。這是我的代碼。電梯程序有錯誤(分段錯誤)

#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; 
} 

非常感謝!

回答

1

啓用編譯器警告和解決所有的警告:

例如:

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

這是錯誤的,scanf參數必須是&udud

+2

@ user3763045前:歡迎堆棧溢出!請[閱讀介紹性遊覽](http://stackoverflow.com/tour)熟悉本網站的基本操作。然後請閱讀[當某人回答我的問題時該怎麼辦?](http://stackoverflow.com/help/someone-answers)。正如你可以在那裏讀到的,一個「感謝,它工作」的評論通常是不被讚賞的:「如果你想說」謝謝「,請投票或接受那個人的回答,或者簡單地向別人提供一個很好的答案別人的問題。「 – usr2564301 2014-09-28 12:25:37

0

嘗試包括stdbool頭寫#include<stdbool.h>和功能UpDownFloor有使用「&」在scanf UD爲scanf("%d",&ud);