2017-05-02 326 views
-4

我想在用戶在鍵盤上輸入「enter」時停止循環。 ps:ch[k-1]!='e'因爲我不知道如何阻止它而出現。如何檢查用戶是否在鍵盤上輸入「enter」? (C)

while (ch[k - 1] != 'e') { 
    if (is_palindrome(ch, k) == true && count == 0) { 
     temp = present_array_as_integer(ch, k); 
     count = 1; 
    } 

    for (int i = 0; i < k - 1; i++) { 
     /* moves the indexes in the array from left to right 
      * and leaves the last index empty */ 
     ch[i] = ch[i + 1]; 
    } 
    scanf(" %c", &ch[k - 1]); 
} 
+1

不要在格式化字符串的開頭放置空格。這使得它跳過包含換行符的空白。 – Barmar

+0

爲什麼不在調試模式下掃描一個輸入按鍵並查看該值是什麼? – Dan

+1

而不是一次讀一個字符,用'fgets()'讀一整行。 – Barmar

回答

0

在C/C++的newline字符是'\n'。所以,從理論上講,你只需要檢查:

while (ch[k-1] != '\n') 

不過,我建議改變這一點:這個

scanf(" %c", &ch[k - 1]); 

scanf("%c", &ch[k - 1]); 

或者你可以使用gets_s()讀取所有字符串,然後通過char解析char。

+0

'gets'是危險的,並且從語言中刪除(C11)。 –

+0

@IljaEverilä謝謝你的提醒我更新了答案 – granmirupa

+0

爲什麼這樣倒退了? – granmirupa

相關問題