【问题标题】:getchar() without pressing 'enter' button [duplicate]getchar()而不按“输入”按钮[重复]
【发布时间】:2013-01-04 11:33:06
【问题描述】:

可能重复:
How to avoid press enter with any getchar()

我需要在控制台 Objective-C 应用程序中按下键盘按键而不按“Enter”按钮

此代码仅在我按“Enter”后才会读取按键代码

int key;
key=getchar();
NSLog(@"%i", key);

我需要这样的东西,但没有按“Enter”。 我该怎么做?

【问题讨论】:

    标签: objective-c c console-application


    【解决方案1】:

    默认情况下,控制台处于“规范”模式,它对输入进行大量处理,并且在遇到新行之前不会将其传递给进程的打开文件描述符。您想将 stdin 置于“非规范”模式,以获取到达时的字节:

    #include <termios.h>
    
    struct termios terminal_info;
    tcgetattr(STDIN_FILENO, &terminal_info);
    terminal_info.c_lflag &= ~ICANON;
    tcsetattr(STDIN_FILENO, TCSANOW, terminal_info);
    

    (您也应该检查tcgetattr()tcsetattr() 返回的错误。)

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2015-11-19
      • 2018-09-18
      相关资源
      最近更新 更多