我试图在按下ESC键时停止我的程序。
例如,我有这样的代码:
char key;
char msg[20];
printf("\n\n\t\t press escape to quit\n\n");
do {
key = _getch();
if (key == ESC) {
printf("Key: ESCAPE");
putchar('\n');
}
else {
printf("Key: %c", key);
putchar('\n');
}
Sleep(5000);
} while (key != ESC);
return 0;
现在当我按ESC时,我需要立即退出程序 有可能吗?
后,我的节目将在5秒后退出Sleep(5000)
我想要做的就是在按下ESC时立即退出程序。
我该怎么做?
答案 0 :(得分:0)
最简单的方法是将睡眠调用移动到else部分,以便仅在密钥<>时执行。按下'ESC'。
char key;
char msg[20];
printf("\n\n\t\t press escape to quit\n\n");
do {
key = _getch();
if (key == ESC) {
printf("Key: ESCAPE");
putchar('\n');
}
else {
printf("Key: %c", key);
putchar('\n');
Sleep(5000);
}
} while (key != ESC);
return 0;
答案 1 :(得分:0)
好吧,你可以将它与它的ASCII码进行比较。 ESC键的ASCII码为27。
char key;
char msg[20];
printf("\n\n\t\t press escape to quit\n\n");
do {
key = _getch();
if (key == 27) {
printf("Key: ESCAPE");
putchar('\n');
}
else {
printf("Key: %c", key);
putchar('\n');
Sleep(5000);
}
} while (key != 27);
答案 2 :(得分:0)
为什么你在循环中检查两次键?只需一次检查即可完成此操作。
这个怎么样?
int key;
char msg[20];
printf("\n\n\t\t press escape to quit\n\n");
while(true) {
key = _getch();
if(key == ESC) {
printf("Key: ESCAPE");
putchar('\n');
break;
}
printf("Key: %c", key);
putchar('\n');
Sleep(5000);
}