Как мне перенести эту программу с conio на curses?

Я написал эту простую программу на 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?

2 ответа

Решение
#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

И здесь вы можете увидеть реализацию kbhit() для linux.

Установите ncurses и просто включите <ncurses.h>,

для установки ncurses это будет полезно.

Другие вопросы по тегам