阅读量: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 键。同时,由于关闭了回显,按键不会显示在屏幕上。