那天写个程序,突然用到TC下的getch()函数,用以即时捕获键盘的输入,但Linux下是没有这个函数的,没办法,只能模拟这个函数。这个函数必须设置终端的属性,关于Linx下的编程,我已经忘记得差不多了,感慨啊。只能从网上求助大牛了,以下程序是一大牛写的,实现了该功能。
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
int getch(void);
int main(void)
{
char ch;
printf("Input a char:");
fflush(stdin);
ch = getch();
printf("\nYou input character is: %c\n", ch);
return 0;
}
int getch(void)
{
int c=0;
struct termios org_opts, new_opts;
int res=0;
//----- store old settings -----------
res=tcgetattr(STDIN_FILENO, &org_opts);
assert(res==0);
//---- set new terminal parms --------
memcpy(&new_opts, &org_opts, sizeof(new_opts));
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
c=getchar();
//------ restore old settings ---------
res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);assert(res==0);
return c;
}
代码出自:http://topic.csdn.net/u/20080417/16/6f0b781c-287a-485c-b370-7c62953c2193.html
感谢这位大牛。
分享到:
相关推荐
linux下实现getch函数
Linux下getch的模拟实现.txt,模拟windows下的getch,通过修改终端特性来实现的,可以帮助理解对终端的控制
在linux下实现getch(),该代码能直接使用,方便自行修改。
主要介绍了Linux系统下解决getch()输入数值不回显示问题,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
对linux c---getch()的详解。
linux终端 Linux Terminal getch,kbhit,彩色文本等
getch获取首次添加
getchar与getch的区别,详细剖析了这两者之间的区别,深入浅出,容易理解。推荐!!!
getch源码 c语言
在Linux下运行,tar -zxvf 2048.tar.gz 解压 并运行即可 //附加头文件代码 #include #include <termios.h> //操作终端 #include #include #include char my_getch() { int c=0; struct termios org_opts, new...
不用enter就可以输入字符,模拟游戏中的操作,代替了windows中的getch()函数
虽然这个问题很简单,但是估计很多人不会在意他们的区别,本人做了一个小小的总结,希望能帮到大家!
getch()、getche()与getchar()的区别与联系
c++中 getch()、getche()和getchar()总是大家迷惑的知识点 这里有他们之间的区别与联系 值得分析研究啊
getch()和getchar()的区别
getche() 和getch()很相似,它也需要引入头文件conio.h,那它们之间的区别又在哪里呢?不同之处就在于getch()无返回显示,getche()有返回显示
某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触python时间也不算长,主要还是Linux下的。 当然,...
C语言中getch()函数详解及简单实例 前言: 这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性! 所以...
my2048.c 代码如下:#include”my_getch.h”#include”math.h”#include”time.h” #define SPACE() printf(” “)#define RED_NUM(n) printf(“\033[;31mM”,(n))#define GREEN_NUM(n) printf(“\033[;32mM”,(n))#...
LINUX的库<conio> 来源: : 电报: : 这是用于Linux的库conio.h。 在/ usr / include /上复制文件并将文件conio.h粘贴到/ usr / include /上清单功能cprintfcscanfgotoxy clrscr textcolor textbackground wherex ...