在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);
}
编译器选项,在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
提前感谢大家!
答案 0 :(得分:2)
你确实打印了字符串。问题是该程序立即退出。这将清除屏幕并将其恢复到以前的状态。当然,这种情况发生得非常快,所以你不会看到任何东西。
解决方法是在退出前等待按键。您可以使用getch()
:
/* ... */
refresh();
getch();
endwin();
exit(EXIT_SUCCESS);
由于Eclipse向应用程序提供了终端,因此出现了Eclipse问题。 NCurses不承认它。我不使用Eclipse,因此我不确切知道如何执行此操作,但您应该搜索一些允许您在完整终端内运行应用程序的设置(如xterm,Konsole,Gnome终端等)