La lecture de clé d'entrée dans une boucle en C
Comment puis-je lire sur la touche entrée dans une boucle plusieurs fois?
J'ai essayé ce qui suit, sans résultat.
char c;
for (i=0; i<n; i++){
c = getchar ();
fflushstdin ();
if (c == '\n'){
//do something
}
}
Et fflushstdin:
void fflushstdin (){
int c;
while ((c = fgetc (stdin)) != EOF && c != '\n');
}
Si j'ai lu tout autre caractère au lieu de la touche entrée, il fonctionne parfaitement, mais avec la touche enter En quelques itérations j'ai appuyer sur entrée 2 fois.
Grâce.
EDIT: je suis à l'exécution du programme par le biais de putty sur windows et le programme est exécuté sur un virtualisé linux mint sur virtual box.
- getch() lit une clé de frapper sans attendre appuyez sur la touche entrée. getchar() nécessite que vous appuyez sur entrée, et vous vous retrouvez à frapper deux fois.
Vous devez vous connecter pour publier un commentaire.
Pourquoi l'appelez-vous fflushstdin()? Si fgetc() renvoie quelque chose de différent de \n, ce personnage est complètement abandonné.
Cela devrait fonctionner:
Essayer
ASCII de la valeur d'entrée est de 13, parfois \n ne fonctionne pas.
Vous devriez aller avec:
depuis
13
est le code ASCII pourEnter
clé.13
de l'OMI,#define ENTER_KEY 13
(ou#define ENTER_KEY '\r'
, si vous le souhaitez) est. Code de style n'est pas pertinent pour cette question.Vous toujours de l'exécution de
getchar
deux fois (même quand il n'est pas besoin pour cela). Essayez de limiter les appels àfflushstdin
: