python getchar函数_linux命令行下用getchar()函数捕获按键

在平常用getchar()函数记录输入时通常要按下enter键程序才能执行,例如下面的程序:

int c;

while((c=getchar())!= EOF)

putchar(c); 每次输入一个字符后要按enter才能显示输入的字符c,而且命令行还会回显字符,如果不想用curses.h中的getch()函数,又想捕获在命令行中捕获按键,那么我们可以对终端属性进行简单的设置来达到目的。

#include

#include

#include

int main()

{

int c;

static struct termios oldt, newt;

/* 将当前设置写入oldt。

*/

tcgetattr( STDIN_FILENO, &oldt );

newt = oldt;

/* ICANON 如果在输入中看到"\n"或者EOF,会返回缓冲区内容

* ECHO 用还控制回显

*/

newt.c_lflag &=~(ICANON | ECHO); // 设置新的终端属性

/*

*TCSANOW 告诉函数立即改变终端的STDIN_FILENO属性值

*/

tcsetattr( STDIN_FILENO, TCSANOW, &newt );

// 当输入e时结束循环

while( (c=getchar())!='e' ){

putchar(c);

}

// 恢复终端设置

tcsetattr( STDIN_FILENO, TCSANOW, &oldt );

return 0;

} 如果想要回显则可以去掉ECHO, newt.c_lflag &=~( ICANON );

由于采用这样的方法后,getchar会捕获enter键并输出换行,所以我们要用一个自定义的字符控制循环。

关于终端的更多属性信息,可以用man命令查看,例如man termios

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值