【问题标题】:Create custom getch() method in C/C++在 C/C++ 中创建自定义 getch() 方法
【发布时间】:2016-06-23 00:04:45
【问题描述】:

我想创建自己的自定义方法,它的工作原理与 getch() 方法完全相同。在 C/C++ 中。

【问题讨论】:

  • 有趣且值得学习的经历,但目前不是问题。
  • 我不知道如何在没有 getch() 的情况下获取字符,没有获取字符并终止的函数。
  • @Olaf - 这似乎已经被理解了。如果有人认为这是一种单一语言,您为什么认为 OP 会写 Either in C/C++(强调“every”这个词)?
  • @enhzflep:嗯,标题比较突出,说明还没有被理解。阅读文字,我仍然认为OP不理解它们是不同的语言。无论如何,这个问题太宽泛了,这不是编码服务。太糟糕了,有些用户没有为一些潜在的代表执行网站规则。

标签: c++ c getch


【解决方案1】:

像这样:

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

/* reads from keypress, doesn't echo */
int getch(void)
{
    struct termios oldattr, newattr;
    int ch;
    tcgetattr( STDIN_FILENO, &oldattr );
    newattr = oldattr;
    newattr.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, &newattr );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldattr );
    return ch;
}

/* reads from keypress, echoes */
int getche(void)
{
    struct termios oldattr, newattr;
    int ch;
    tcgetattr( STDIN_FILENO, &oldattr );
    newattr = oldattr;
    newattr.c_lflag &= ~( ICANON );
    tcsetattr( STDIN_FILENO, TCSANOW, &newattr );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldattr );
    return ch;
}

,我从here得到的。

【讨论】:

  • 谢谢你先生.. :)
  • 这不是编码服务。你应该要求 OP 展示她自己的研究成果。这也不是在所有操作系统上运行。此外,这实际上只是复制了另一个答案的代码,这充其量是不好的行为。您应该改为使用 dup-CVed。
  • 有人删除了我的评论@Olaf,我说尽管你的行为一般,但这次你是对的,谢谢。
  • @gsamaras:它被删除是有充分理由的。我将其标记为冒犯。如果没有令人反感的侧面打击,您的评论就足够了。注意你的举止。那条评论也是边缘的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多