2017-07-31 20 views
-1

ncursesライブラリをLinux mintにインストールしましたが、にはまだgetchの機能を使用できません。私はLinux mint 18.2を使用しています。Linuxのcの `getch`関数の使い方は?

[email protected]$ gcc-7 test.c -lcurses 
[email protected]$ ./a.out 
how are you�[email protected]$ 

それは私が任意のキーを押して、すぐに終了するのを待ちdoes't:ここ

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

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

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

が出力されます:

は、ここに私のプログラムです。私はconio.hをLinuxにインストールしたくありません。 Linuxでgetchgetcheの機能を使用するにはどうすればよいですか?私自身の機能を発揮するように教えてください。私はまだノブです。あるいは、代替手段が必要です。

+1

'getch()'は、cursesを初期化した後にのみ動作を定義します。少なくとも 'initscr()'と 'endwin()'のためのGoogle。 –

+1

Btwでは 'stdio'関数と' curses'関数を混在させることはできません。 –

+0

もっと重要なのはなぜですか?あなたは何を達成したいですか?現在の問題点からは、何かのためにncursesが必要なようには見えません。そう? –

答えて

3

は、ここでコメントで間違っているものを説明し、「修正」バージョンです:

#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の機能」ではありません。これはコンソール/端末制御のためのよく知られたプラットフォームに依存しないAPIの一部であり、実装は例えば以下の通りです。 * nixシステム(ncurses)とWindows(pdcurses)用です。それはで、は言語の一部です。

関連する問題