【问题标题】:How to use Escape Key to end a Loop in C如何使用 Escape 键结束 C 中的循环
【发布时间】:2014-11-07 00:14:41
【问题描述】:

我只想像这样结束 C 中的 do while 循环:

#include <stdio.h>
#include <stdlib.h>

main()
{
    char exit;
    do{
        printf("PLEASE INSERT OPTION:");
        exit = getchar();
    }while(exit != '\027');

}//main

我认为是这样的。

【问题讨论】:

  • 有什么问题?
  • @DrewMcGowen 如何使用 Escape Key 来结束 C 中的循环
  • 不要使用名为exit的变量;还有一个名为exit() 的函数,您将无法在具有名为exit 的局部变量的函数中使用它。一个名为exit 的全局变量会更糟。
  • @2501 也许可以更清楚地说明 - 就目前而言,OP 提供的代码似乎可以回答这个问题,所以不清楚 真正 被问到的是什么。
  • 好的,我只想在按下 Escape 键的同时结束一个循环。我已经尝试了上面的代码,但循环永远不会结束。

标签: c loops getch


【解决方案1】:

27 是 Escape 的十进制 ASCII 值,但您使用八进制字符代码。你应该说27'\033'(或'\x1b' 表示更常见的十六进制)。这可能是问题所在,假设您的终端允许通过 Escape 字符。有时它们被用于终端级别的魔法,因此被终端“吃掉”。

另外,请注意getchar(),尽管它的名字,返回int char。它还可以返回非字符值EOF(如果您按 Ctrl+D(在 Unix 中)),因此需要更大的类型。

【讨论】:

    【解决方案2】:

    我刚刚发现问题,看这段代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    
    main()
    {
    int exit;
    do{
         printf("PLEASE INSERT OPTION:");
    exit = getch();
    
    }while(exit != 27);
    
    }//main
    

    那行得通。谢谢您的帮助。 @MichaelWalz @DrewMcGowen @2501 @unwind

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2019-04-22
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多