如何在 Linux 中使用 c 的 `getch` 函数?

How to use `getch` function of c in Linux?

我已经在 Linux mint 中安装了 ncurses 库,但我仍然无法在 中使用 getch 函数。我正在使用 Linux mint 18.2。

这是我的程序:

#include <stdio.h>
#include <curses.h>

int main() {
    char k;
    printf("how are you");

    k = getch();
    printf("%c",k);
}

这是输出:

 ram@ram$ gcc-7 test.c -lcurses
 ram@ram$ ./a.out 
 how are you�ram@ram$

它不等我按任意键就快速终止。我不想为 Linux 安装 conio.h。如何在 Linux 中使用 getchgetche 函数?请不要告诉我做我自己的功能。我还是菜鸟。或者必须有替代品。

这是一个 "corrected" 版本,解释了评论中的错误:

#include <curses.h>
#include <stdio.h>

int main(void)
{
    // use the correct type, see https://linux.die.net/man/3/getch
    int k;

    // init curses:
    initscr();

    // in curses, you have to use curses functions for all terminal I/O
    addstr("How are you?");

    k = getch();

    // end curses:
    endwin();

    printf("You entered %c\n", k);

    return 0;
}

这仍然不是好的代码,你至少应该检查一下你是否从 getch().

中得到了一个有效的字符

同样重要的是要注意 getch() 不是 "function of C"。它是 curses 的一部分,一个著名的独立平台 API 用于 console/terminal 控制,实现例如对于 *nix 系统 (ncurses) 和 Windows (pdcurses)。它不是 C 语言的一部分。