当前位置: 首页 > 面试题库 >

在Linux中相当于getch()和getche()?

杜焕
2023-03-14
问题内容

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

Linux中有getch()getche()功能选项吗?

我想创建一个切换案例基​​础菜单,用户只需按一个键就可以给出选项,并且过程应该向前移动。我不想让用户按其选择后按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


 类似资料:
  • 问题内容: 以前,我在支持头文件的Windows上使用c ++ / c编译器,但在有Linux的Linux上使用 我想要一个功能完全一样的功能。我不知道为什么我的编译器不支持头文件 净我搜索后,得到了本该说,可能是最接近的等效但是这两个都在,如果我们写的方式不同不显示,而如果我们用输入字符的控制台上输入的文字会显示在人物安慰。我不希望角色显示在控制台上。 使用还会在控制台上显示字符。 问题答案:

  • 问题内容: 我不想知道Windows和Linux中的API函数之间是否存在一一对应的关系,也不想知道每个API函数。 我只想了解两点基本知识: 我想了解为什么Qt平台独立 我想知道我应该在Linux中使用什么API来移植使用Win32 API编程的应用程序,或者换句话说,移植到Win32 API级别。 我知道这不切实际,但我想知道这种等效性。 问题答案: 您需要了解什么是系统调用。在Linux上,

  • 问题内容: 在Windows上,我具有以下代码来查找输入而不会中断循环: 但是,看到没有,在Linux上实现相同目标的最简单方法是什么? 问题答案: 上面引用的ncurses howto可能会有所帮助。这是一个示例,说明如何像conio示例一样使用ncurses: 请注意,对于ncurses,不使用标头。这是因为将stdio与ncurses混合会产生意外结果。 顺便说一下,ncurses定义和。正

  • 问题内容: 我正在寻找一种计算跨平台crc校验和的方法。 可以在Linux,AIX,HP-UX Itanium,Solaris上运行,在Windows中也有与Linux等效的命令吗? 注意 :没有第三方工具 问题答案: 在Windows(命令提示符)中,您可以使用CertUtil,语法如下: 在cmd中输入语法说明: 例: 默认支持的SHA1是:MD2,MD4,MD5,SHA1,SHA256,SH

  • 问题内容: 我的任务是为开源JAVA应用程序编写身份验证组件。我们有一个使用的内部身份验证窗口小部件。我有一些例子访问的代码,它使用来办理过户。 我的问题是,是否有 的端口,或者更好的是,什么基本软件包将使我足够接近以处理任务? 更新: 简而言之,我想在JAVA中复制的代码: 希思,我认为你的目标是正确的,我认为我最终将使用HttpsURLConnection,然后从响应中选择所需的内容。 问题答

  • 在Android中,和,用于根据小部件包含的内容自动调整小部件的大小。 在Flutter中,默认情况下似乎所有小部件都设置为,我将如何更改它,以便我可以将其和填充为其父级?