Domanda

Quando sto usando PDcurses e cerco di avere un po 'di uscita ciclo quando il tasto Invio viene premuto con while(key != KEY_ENTER), il ciclo while mai uscite. Tuttavia, quando cerco di avere la stessa uscita ciclo con while((char)key != '\n'), esce con successo ogni volta che ho premuto invio. Perché funziona '\n' e non KEY_ENTER?

btw, key è un int

e spero che questo sia le pertinenti poche righe di codice:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
È stato utile?

Soluzione

getch() è una funzione definita dallo standard ANSI C per la libreria di runtime C.

Nella maggior parte dei sistemi, come Windows, Linux, ecc, questa funzione viene implementata per restituire '\n' quando l'utente preme Invio. Per confronto, su Windows the-premere il tasto stesso (di Enter) potrebbe essere rappresentata come il codice-chiave VK_ENTER.

PDCurses è tradurre i codici chiave per valori ASCII per voi.

È possibile ottenere i valori chiave che vuoi se prima di chiamare le funzioni PDCurses raw(); nonl();. Inoltre, probabilmente si dovrebbe utilizzare wgetch() per il nuovo codice.

Altri suggerimenti

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

'\ n' è il ritorno a capo standard ASCII, mentre KEY_ENTER rappresenta un codice di tastiera. Vedere il codice PDCurses .

Per ulteriori informazioni, si dovrebbe inserire la parte rilevante del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top