首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Linux下实现C的getch()函数?

如何在Linux下实现C的getch()函数?
EN

Stack Overflow用户
提问于 2010-07-19 01:40:18
回答 11查看 65.8K关注 0票数 23

在TurboC++中,我可以使用conio.h中的getch()函数。但是在Linux中,gcc并没有提供conio.h。如何获得getch()的功能

EN

回答 11

Stack Overflow用户

发布于 2014-04-13 03:24:05

尝试此conio.h文件:

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

您还可以使用gcc中的ncurses库来实现一些类似于conio.h的功能。

票数 32
EN

Stack Overflow用户

发布于 2010-07-19 01:44:43

如果回显到屏幕不是问题,您可以尝试使用stdio.h中的getchar()

票数 7
EN

Stack Overflow用户

发布于 2010-07-19 01:43:31

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3276546

复制
相关文章

相似问题

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