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
總結
以上是生活随笔為你收集整理的python getchar函数_linux命令行下用getchar()函数捕获按键的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021届校招求职计划、总结
- 下一篇: android 读取单反相机,手机怎么直