6

ncurses ライブラリでいくつかの基本的な例を実行すると、いくつかの問題が発生します。

実際、私は期待したものを取得できず (メッセージが出力されました)、Eclipse からデバッグを開始すると、(コンソール領域で) 「ターミナルを開く際のエラー: 不明」が表示されます。

次のコード:

#include <unistd.h>
#include <stdlib.h>
#include <ncurses.h>


int main() {

    initscr();

    move(5,15);
    printw("%s", "Hello world!");
    refresh();

    endwin();
    exit(EXIT_SUCCESS);
}

Eclipse コンソールの「ビルド プロジェクト」コマンドで提供されるコンパイラ オプション:

make all 
Building file: ../source/Curses_01.c
Invoking: GCC C Compiler
gcc -Incurses -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"source/Curses_01.d"     -MT"source/Curses_01.d" -o"source/Curses_01.o" "../source/Curses_01.c"
Finished building: ../source/Curses_01.c

Building target: Curses_01
Invoking: GCC C Linker
gcc  -o"Curses_01"  ./source/Curses_01.o   -lcurses
Finished building target: Curses_01

みなさん、よろしくお願いします!

4

1 に答える 1

3

文字列が印刷されます。問題は、プログラムがすぐに終了することです。これにより、画面がクリアされ、以前の状態に戻ります。もちろん、これは非常に高速に行われるため、何も表示されません。

解決策は、終了する前にキーが押されるのを待つことです。あなたはこれを行うことができますgetch()

/* ... */
refresh();
getch();
endwin();
exit(EXIT_SUCCESS);

Eclipse の問題は、Eclipse がアプリケーションに提示する端末が原因で発生します。NCurses はそれを認識しません。私は Eclipse を使用していないので、これを行う方法が正確にはわかりませんが、完全なターミナル (xterm、Konsole、Gnome ターミナルなど) 内でアプリケーションを実行できる設定を検索する必要があります。

于 2012-11-02T13:07:27.717 に答える