2017-05-02 2 views
-4

Ich möchte die Schleife stoppen, wenn der Benutzer "enter" auf der Tastatur eingibt. ps: ch[k-1]!='e' erscheint, weil ich nicht wusste, wie man es sonst stoppt.Wie kann ich überprüfen, ob der Benutzer "Enter" auf der Tastatur eingegeben hat? (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

Platzieren Sie nicht am Anfang der Formatzeichenfolge Platz. Dadurch wird Whitespace übersprungen, was Newline einschließt. – Barmar

+0

Warum scannen Sie nicht, wenn eine Eingabetaste im Debug-Modus gedrückt wird, um zu sehen, um welchen Wert es sich handelt? – Dan

+1

Lesen Sie statt eines einzelnen Zeichens eine ganze Zeile mit 'fgets()'. – Barmar

Antwort

0

Der newline Charakter in C/C++ ist '\n'. Also in der Theorie braucht man nur zu überprüfen:

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

Allerdings würde ich das empfehlen Wechsel:

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

in dieser:

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

Oder Sie können gets_s() verwenden zum Lesen all string und dann parsen es char von char.

+0

'gets' ist gefährlich und aus der Sprache entfernt (C11). –

+0

@ IljaEverilä danke für die Erinnerung Ich habe die Antwort aktualisiert – granmirupa

+0

Warum dieses Downvote? – granmirupa

Verwandte Themen