ncurses基本示例 - 在调试中得到:"打开终端时出错:未知."

gra*_*ori 6 c eclipse linux gcc ncurses

在ncurses libreries上做一些基本的例子,我遇到了一些问题.

实际上,我没有得到我所期望的(消息打印),并且从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);
}
Run Code Online (Sandbox Code Playgroud)

编译器选项,在Eclipse控制台的"Build project"命令中提供:

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
Run Code Online (Sandbox Code Playgroud)

提前谢谢大家!

Nik*_* C. 3

您确实打印了字符串。问题是程序立即退出。这将清除屏幕并将其恢复到之前的状态。当然,这种情况发生得非常快,所以你看不到任何东西。

解决方案是在退出之前等待按键。您可以通过以下方式执行此操作getch()

/* ... */
refresh();
getch();
endwin();
exit(EXIT_SUCCESS);
Run Code Online (Sandbox Code Playgroud)

Eclipse 问题的出现是由于 Eclipse 向应用程序提供了终端。NCurses 无法识别它。我不使用 Eclipse,所以我不知道具体如何执行此操作,但您应该搜索一些设置,允许您在完整终端(如 xterm、Konsole、Gnome 终端等)中运行应用程序