gpt4 book ai didi

c - Linux 中的 getch() 和 getche() 等价于什么?

转载 作者:IT老高 更新时间:2023-10-28 12:32:53 27 4
gpt4 key购买 nike

我在 Linux 中找不到 conio.h 的等效头文件。

getche() & getche() 在 Linux 中有没有选项?

我想制作一个 switch case 基本菜单,用户只需按一个键就可以给出他的选项,并且进程应该向前移动。我不想让用户在按下他的选择后按下 ENTER。

最佳答案

#include <termios.h>
#include <stdio.h>

static struct termios old, current;

/* Initialize new terminal i/o settings */
void initTermios(int echo)
{
tcgetattr(0, &old); /* grab old terminal i/o settings */
current = old; /* make new settings same as old settings */
current.c_lflag &= ~ICANON; /* disable buffered i/o */
if (echo) {
current.c_lflag |= ECHO; /* set echo mode */
} else {
current.c_lflag &= ~ECHO; /* set no echo mode */
}
tcsetattr(0, TCSANOW, &current); /* use these new terminal i/o settings now */
}

/* Restore old terminal i/o settings */
void resetTermios(void)
{
tcsetattr(0, TCSANOW, &old);
}

/* Read 1 character - echo defines echo mode */
char getch_(int echo)
{
char ch;
initTermios(echo);
ch = getchar();
resetTermios();
return ch;
}

/* Read 1 character without echo */
char getch(void)
{
return getch_(0);
}

/* Read 1 character with echo */
char getche(void)
{
return getch_(1);
}

/* Let's test it out */
int main(void) {
char c;
printf("(getche example) please type a letter: ");
c = getche();
printf("\nYou typed: %c\n", c);
printf("(getch example) please type a letter...");
c = getch();
printf("\nYou typed: %c\n", c);
return 0;
}

输出:

(getche example) please type a letter: g
You typed: g
(getch example) please type a letter...
You typed: g

关于c - Linux 中的 getch() 和 getche() 等价于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7469139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com