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;
}