如何在 Linux 中使用 c 的 `getch` 函数?
How to use `getch` function of c in Linux?
我已经在 Linux mint 中安装了 ncurses
库,但我仍然无法在 c 中使用 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 中使用 getch
和 getche
函数?请不要告诉我做我自己的功能。我还是菜鸟。或者必须有替代品。
这是一个 "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 语言的一部分。
我已经在 Linux mint 中安装了 ncurses
库,但我仍然无法在 c 中使用 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 中使用 getch
和 getche
函数?请不要告诉我做我自己的功能。我还是菜鸟。或者必须有替代品。
这是一个 "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 语言的一部分。