如何在Linux下自定义getchar行为

avatar
作者
筋斗云
阅读量:0

在 Linux 下,您可以通过使用 termios 库自定义 getchar() 函数的行为

#include<stdio.h> #include <termios.h> #include <unistd.h>  int my_getchar() {     struct termios old_term, new_term;     int ch;      // 获取当前终端设置     tcgetattr(STDIN_FILENO, &old_term);      // 复制旧终端设置到新设置     new_term = old_term;      // 关闭回显和规范模式     new_term.c_lflag &= ~(ECHO | ICANON);      // 应用新终端设置     tcsetattr(STDIN_FILENO, TCSANOW, &new_term);      // 读取一个字符     ch = getchar();      // 恢复旧的终端设置     tcsetattr(STDIN_FILENO, TCSANOW, &old_term);      return ch; }  int main() {     int ch;      printf("Press any key to continue...\n");     ch = my_getchar();     printf("You pressed: %c\n", ch);      return 0; } 

这个程序首先获取当前终端设置,然后创建一个新的设置,其中关闭了回显和规范模式。接下来,它将新设置应用于终端,并使用 getchar() 读取一个字符。最后,它恢复旧的终端设置。

这样,当您运行此程序时,它将立即响应您的按键,而不是等待您按下 Enter 键。同时,由于关闭了回显,按键不会显示在屏幕上。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!