通过将 esc 作为用户的输入退出循环[重复]

Posted

技术标签:

【中文标题】通过将 esc 作为用户的输入退出循环[重复]【英文标题】:exit a loop by taking esc as input from user [duplicate] 【发布时间】:2016-03-22 16:12:19 【问题描述】:

假设我处于无限循环中,我希望用户以整数形式输入数据。然后数据将被传递给另一个函数以用于其他目的,这个过程将继续进行,直到用户输入 esc 代替数据并且我希望循环在该点中断。我该怎么做?

 while(1)
 
    printf("enter the data that need to entered\npress esc to exit\n");

    scanf("%d",&n);

    function(n);
 

我尝试使用 if-else 但如果我将 esc 的 ascii 值作为数据输入,它会退出我不想发生的循环?

【问题讨论】:

【参考方案1】:

正如 dingrite 在他的另一个回答中所写:

最好的办法是创建一个自定义的“GetAsyncKeyState”函数,该函数将使用 #IFDEF for windows 和 linux 来选择适当的 GetAsyncKeyState() 或等效函数。

没有其他方法可以达到预期的效果,cin 方法有它的问题 - 例如应用程序必须在焦点上。

看看这个问题:C++: execute a while loop until a key is pressed e.g. Esc?

或者你可以试试其他页面上的这个例子

#include <stdio.h>

int main (void)

    int c;

    while (1) 
        c = getchar();            // Get one character from the input
        if (c == 27)  break;   // Exit the loop if we receive ESC
        putchar(c);               // Put the character to the output
    

    return 0;

希望这会有所帮助。

【讨论】:

以上是关于通过将 esc 作为用户的输入退出循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在java中输入退出选择之前,我如何继续在switch case中进行选择[重复]

Java菜单程序“X”退出开关[重复]

实时matplotlib图在循环中不起作用[重复]

C ++循环:如何让程序在用户输入无效输入时多次重复“错误”消息

PDO循环数组进入查询[重复]

Unity 3d启用鼠标指针作为事件触发器的指针进入/退出[重复]