int main()
{ int ch;
int goon=1;
while(goon)
{
ch=getch();
switch(ch)
{
case 27: goon=0;
break;
default : printf("\n%2x",ch);
}
}
return 0;
}
我的OS是RedFlag 5.0,用这个编译:
gcc -o testkey testkey.c -g
出现下面的提示:
/tmp/ccC6dCHR.o(.text+0x32): In function `main':
: undefined reference to `stdscr'
/tmp/ccC6dCHR.o(.text+0x37): In function `main':
: undefined reference to `wgetch'
collect2: ld returned 1 exit status
编译无法通过。于是我用下面的命令来编译 :
gcc -o testkey testkey.c -lcurses -g
这样虽然能编译成功,执行时却会出现“段错误”立即退出了。
我用gdb调试,发现一旦执行getch()就出现下面的提示
Program received signal SIGSEGV, Segmentation fault.
0x00483cba in wgetch (win=0x0) at ../../ncurses/base/lib_getch.c:467
467 ../../ncurses/base/lib_getch.c: 没有那个文件或目录.
in ../../ncurses/base/lib_getch.c
再往下执行的话程序就退出了。