Linux下类似DOS中的getch()

前段时间写BF解释器,中有一个地方需要读入一个字符直接返回,类似于DOS下在TC中编程时常用的getch()函数。

但是很不幸,Linux下的getch()不是这个意思,后来在网上搜索,找到一个解决方案。

事实上就是通过对终端的设置,来实现的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int mygetch( )
{
    struct termios oldt,newt;
    int ch;

    tcgetattr( STDIN_FILENO, &oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, &newt );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldt );

    return ch;
}

这样,就可以实现这个功能。

《Linux下类似DOS中的getch()》有5条评论

  1. Experct C中提过这个东西,你可以查看一下,同时也对unix下的getch的使用有一个简单的例子,有空你可以看看。

    回复

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据