如何在Linux中使用c的`getch`功能?

时间:2017-07-31 10:47:39

标签: c linux ncurses getch

我已经在Linux中安装了protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Project>().Map(); base.OnModelCreating(modelBuilder); } 库,但仍然无法在中使用$mutes = GameMute::where('expires_at','>', \Carbon\Carbon::now()) ->orderBy('created_at', 'asc')->get(); 函数。我正在使用Linux mint 18.2。

这是我的计划:

ncurses

这是输出:

getch

它不会等我按任意键并快速终止。我不想为Linux安装#include <stdio.h> #include <curses.h> int main() { char k; printf("how are you"); k = getch(); printf("%c",k); } 。如何在Linux中使用 ram@ram$ gcc-7 test.c -lcurses ram@ram$ ./a.out how are you�ram@ram$ conio.h函数?请不要告诉我自己的功能。我还是个菜鸟。或者必须有替代品。

1 个答案:

答案 0 :(得分:2)

这是一个“更正”的版本,解释了评论中的错误:

#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()不是“C的功能”。它是curses的一部分,ncurses是一个众所周知的与平台无关的控制台/终端控制API,其实现例如:对于* nix系统(pdcurses)和Windows(// Here, thisActivity is the current activity if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.READ_CONTACTS)) { // Show an explanation to the user *asynchronously* -- don't block // this thread waiting for the user's response! After the user // sees the explanation, try again to request the permission. } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an // app-defined int constant. The callback method gets the // result of the request. } } )。它是不是语言C的一部分。