我有一段簡單的代碼,可以使用ncurses.
據我了解,1 次按鍵會將 3 個值推入緩沖區。例如,第三個值區分箭頭鍵。
因此,當按下鍵盤上 4 個箭頭中的任何一個時,推入緩沖區的前 2 個值應該類似\033, 和[。但是第三個值是唯一的箭頭(A向上、B向下、C向右或D向左)。因此,當將動作映射到擊鍵時,我們依賴于第三個值。
在嘗試評估按下了哪個箭頭時,我嘗試了if else梯子和switch. 該if else階梯完美的作品。但是開關似乎在每個按鍵上觸發多個案例。
這是作業代碼(如果其他)-
char first = getch(); //returns \033
char second = getch(); //returns [
char third = getch(); // returns A or B or C or D
if(third == 'A'){
printf("Up Arrow Pressed");
}
else if(third == 'B'){
printf("Down Arrow Pressed");
}
else if(third == 'C'){
printf("Right Arrow Pressed");
}
else if(third == 'D'){
printf("Left Arrow Pressed");
}
這是不起作用的代碼(案例)-
char first = getch(); //returns \033
char second = getch(); //returns [
char third = getch(); // returns A or B or C or D
switch(third){
case('B'):
printf("\nDOWN");
case('C'):
printf("\nRIGHT");
case('A'):
printf("\nUP");
case('D'):
printf("\nLEFT");
default:
printf("default");
}
這是使用案例時的輸出,我按下向下鍵:

uj5u.com熱心網友回復:
如果你沒有break;在一個案例結束時執行下一個案例。
uj5u.com熱心網友回復:
如果您break在每個案例的末尾不使用,那么您在真實案例之后撰寫的案例也將被執行。
uj5u.com熱心網友回復:
在每種情況下使用“break;”(與作為影像提供的代碼中的代碼相同)作為最后一條陳述句,以防止執行后續情況。!( https://i.stack.imgur.com/up2pG.png )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/331933.html
下一篇:在c中拆分字串和計數標記
