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 回答