前段时间写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; } |
这样,就可以实现这个功能。
呵呵,误会,误会了,小林子同学这几天这本书倒是看了不少。
我还纳闷呢?king sir这小孩,不声不响就吧Expert C给看完了呢~
晕 没注意看 居然是king sir的签名 上次他在我这儿上网,我没改过来,晕
Experct C中提过这个东西,你可以查看一下,同时也对unix下的getch的使用有一个简单的例子,有空你可以看看。
貌似见过,网上有。