2017-05-02 7 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

Enterキーをscanfしてデバッグモードで押して、その値が何であるか確認してみませんか? – Dan

+1

一度に1文字ずつ読むのではなく、 'fgets()'で一行全体を読む。 – Barmar

答えて

0

C/C++でのnewline文字が'\n'です。この中

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

:しかし、私はこれを変更することをお勧め

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

を:

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

それとも、すべての読み取り用gets_s()を使用することができますので、理論的にはあなただけをチェックする必要があります文字列を解析し、それをcharで解析します。

+0

'gets'は危険であり、言語から削除されます(C11)。 –

+0

@IljaEveriläリマインダーに感謝私は答えを更新 – granmirupa

+0

なぜこのdownvote? – granmirupa

関連する問題