按键

时间:2017-02-23 08:56:37

标签: c++ keypress exit

我试图在按下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时立即退出程序。

我该怎么做?

3 个答案:

答案 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);
}