Question

Quand j'utilise PDCURSES et j'essaie d'avoir un certain temps la sortie de boucle lorsque la touche entrée est pressée avec while(key != KEY_ENTER), la boucle while jamais sorties. Cependant, quand j'essayer d'avoir la même sortie en boucle avec while((char)key != '\n'), il sort avec succès chaque fois que je pressais entrer. Pourquoi fonctionne-t-'\n' et non KEY_ENTER?

BTW, key est un int

et j'espère que ce sont les quelques lignes pertinentes du code:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
Était-ce utile?

La solution

getch() est une fonction définie par la norme ANSI C pour la bibliothèque d'exécution C.

Sur la plupart des systèmes tels que Windows, Linux, etc., cette fonction est mis en œuvre pour revenir '\n' lorsque l'utilisateur appuie sur Entrée. À titre de comparaison, sous Windows, la pression de touche lui-même (Enter) peut être représenté comme VK_ENTER clé code.

PDCURSES se traduit par les codes clés à des valeurs ASCII pour vous.

Vous pouvez obtenir les valeurs clés que vous voulez si vous appelez d'abord les fonctions PDCURSES raw(); nonl();. Aussi, vous devriez probablement utiliser wgetch() pour le nouveau code.

Autres conseils

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

\ n 'est la norme ASCII nouvelle ligne, alors que KEY_ENTER représente un code de clavier. Voir le code de PDCURSES .

Pour plus d'informations, vous devez poster la partie pertinente de votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top