1、使用 getch() 或 getche()
getch()
和 getche()
是在某些 C 编译器中(例如 Borland C、Turbo C)提供的功能,它们可以从键盘获取单个字符,而不需要按下回车键。
#include <conio.h> int main() { char ch; ch = getch(); // 获取一个字符,按键后立即返回 printf("You pressed: %c\n", ch); return 0; }
2、使用 termios 库(适用于 UNIX/Linux 系统)
在 UNIX/Linux 系统中,可以使用 termios
库来禁用回车键,实时读取字符。
#include <stdio.h> #include <unistd.h> #include <termios.h> char getch(void) { struct termios oldt, newt; char ch; tcgetattr(STDIN_FILENO, &oldt); // 获取当前终端设置 newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); // 禁用行缓冲和回显 tcsetattr(STDIN_FILENO, TCSANOW, &newt); // 设置新的终端设置 ch = getchar(); // 获取字符 tcsetattr(STDIN_FILENO, TCSANOW, &oldt); // 恢复旧的终端设置 return ch; } int main() { char ch; printf("Press a key: "); ch = getch(); // 获取单个字符 printf("\nYou pressed: %c\n", ch); return 0; }
3、使用 kbhit()(适用于某些特定环境)
在 Turbo C 或一些特定的环境中,可以使用 kbhit()
函数来检测是否有按键被按下。
#include <conio.h> int main() { char ch; printf("Press a key: "); while (!kbhit()) { // 等待用户按下键 } ch = getch(); // 获取单个字符 printf("\nYou pressed: %c\n", ch); return 0; }