2016-12-06 70 views
0

我想輸入字符並將其存儲到數組StringTemp[5][50]。它會停止輸入字符,如果我按下輸入按鈕。但它不起作用用getche輸入字符並將其存儲到數組中

char StringTemp[5][50]; 
char c; 
int i,o; 
i = 1; 
o = 1; 

c = getche(); 
while (c != EOF && c != '\n') { 
    if (c == ' ') { 
     i++; 
     o = 1; 
    } 
    else { 
     StringTemp[i][o] = c; 
     o++; 
    } 
    c = getche(); 
} 

有什麼建議嗎?

+2

1)'i = 1; o = 1;' - >'i = 0; o = 0;''以'0'開始。 2)'char c;' - >'int c;'3)C字符串必須以0結尾。 – BLUEPIXY

+1

您應該使用'int c;'來避免錯誤處理。你也應該防止緩衝區溢出。 –

+0

爲什麼用'int'來存儲一個字符? –

回答

1
  1. 根據鍵盤和標準輸入有變化,但getche()獲得沒有回聲的鍵。當用戶輸入回車時,未註冊的字符可能是'\ n'或'\ r'。打印時,您將獲得相應的換行或回車。由於Enter鍵映射到鍵盤上的'\ r',所以當通過getche()獲取時,測試它並打印'\ n'。當通過getchar()獲取時,C將輸入轉換爲'\ n'。

    int ch = getche();

    if(ch =='\ r')c ='\ n';

    printf(「%c」,ch);

  2. 使用int c因此代碼可以檢查EOF。

相關問題