首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当在C中按上箭头键时,我如何立即采取行动?

当在C中按上箭头键时,我如何立即采取行动?
EN

Stack Overflow用户
提问于 2018-02-02 07:41:17
回答 1查看 326关注 0票数 1

我正在Linux上编写一个C程序,当按下向上或向下箭头键时,需要立即在控制台上显示一些东西,而不需要在控制台上编写^[[A^[[B,然后按enter键在控制台上显示某些内容。

我正在模拟linux,我想像历史特性那样影响linux,在这里,当我们按上下键时,会显示最近输入的命令。我正在使用GNU历史库来实现这个功能。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-02 08:13:19

我们可以为get编写自己的函数,比如禁用回波标志、读取字符,并再次启用回波标志.So,您可以在控制台上看到打印。

代码语言:javascript
运行
复制
#include <stdio.h>
#include <unistd.h>
#include <termios.h>

int getch();

int main(int argc, char **argv) {
   int ch;
   for (;;) {
      ch = getch();
      if(ch == 27)
         printf("UP arrow\n");
      else if(ch ==28)
         printf("down arrow\n");
      else
         printf("wrong input \n");

      break;
   }
   return 0;
}

int getch() {
   struct termios oldtc;
   struct termios newtc;
   int ch;
   tcgetattr(STDIN_FILENO, &oldtc);
   newtc = oldtc;
   newtc.c_lflag &= ~(ICANON | ECHO);
   tcsetattr(STDIN_FILENO, TCSANOW, &newtc);
   ch=getchar();
   tcsetattr(STDIN_FILENO, TCSANOW, &oldtc);
   return ch;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48577921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档