如何将此程序从 conio 移植到 curses?

Posted

技术标签:

【中文标题】如何将此程序从 conio 移植到 curses?【英文标题】:How do I port this program from conio to curses? 【发布时间】:2012-08-28 04:19:05 【问题描述】:

我在 Windows 上编写了这个简单的程序。由于 Windows 有 conio,所以它工作得很好。

#include <stdio.h>
#include <conio.h>

int main()

    char input;

    for(;;)
    
        if(kbhit())
        
            input = getch();
            printf("%c", input);
        
    
    

现在我想将它移植到 Linux,curses/ncurses 似乎是正确的方法。我将如何使用这些库代替 conio 来完成同样的任务?

【问题讨论】:

【参考方案1】:
#include <stdio.h>
#include <ncurses.h>

int main(int argc, char *argv)

    char input;

    initscr(); // entering ncurses mode
    raw();     // CTRL-C and others do not generate signals
    noecho();  // pressed symbols wont be printed to screen
    cbreak();  // disable line buffering
    while (1) 
        erase();
        mvprintw(1,0, "Enter symbol, please");
        input = getch();
        mvprintw(2,0, "You have entered %c", input);
        getch(); // press any key to continue
    
    endwin(); // leaving ncurses mode    
    return 0;

在构建程序时不要忘记将 ncurses lib (-L lncurses) 标志链接到 gcc

gcc -g -o sample sample.c -L lncurses

here 你可以看到 kbhit() 在 linux 上的实现。

【讨论】:

谢谢,这正是我所需要的。

以上是关于如何将此程序从 conio 移植到 curses?的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 postgresql 滞后语句移植到 mysql?

将 Delphi 逐步移植到 C++

linux系统中,编写的C程序调用conio.h,但不行。出现下图提示,这要如何解决呢,怎么才可以调用到conio.h

coures包下载和安装 可解决报错ImportError: No module named '_curses'

curses.h: No such file or directory

如何使用片段反向移植?