Frage

Wenn ich PDCurses verwende und ich versuche, eine Weile Schleife zu beenden, wenn die Eingabetaste mit gedrückt wird while(key != KEY_ENTER), die while -Schleife verlässt nie. Wenn ich jedoch versuche, die gleiche Schleife zu beenden mit while((char)key != '\n'), Es geht erfolgreich, wenn ich die Eintrittsgefühl drückte. Warum tut '\n' arbeiten und nicht KEY_ENTER?

Übrigens, key ist ein int

Und ich hoffe, dies sind die entsprechenden wenigen Zeilen des Codes:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
War es hilfreich?

Lösung

getch() ist eine Funktion, die vom ANSI C -Standard für die C -Laufzeitbibliothek definiert ist.

Bei den meisten Systemen wie Windows, Linux usw. wird diese Funktion für die Rückkehr implementiert '\n' Wenn der Benutzer eingegeben wurde. Zum Vergleich kann unter Windows die Tastatur selbst (der Eingabetaste) als Schlüsselcode dargestellt werden VK_ENTER.

PDCurses übersetzt die Schlüsselcodes in ASCII -Werte für Sie.

Sie können die gewünschten Schlüsselwerte erhalten, wenn Sie die PDCurses -Funktionen zuerst aufrufen raw(); nonl();. Sie sollten auch wahrscheinlich verwenden wgetch() für neuen Code.

Andere Tipps

KEY_ENTER == 0x157, '\n' == 0xA

' n' ist die Standard -ASCII -Newline, während Key_enter einen Tastaturcode darstellt. Sehen Der PDCurses -Code.

Für weitere Informationen sollten Sie den entsprechenden Teil Ihres Code veröffentlichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top