QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1503|回复: 2

请问:getch()这个函数到底该怎么用?

[复制链接]
发表于 2006-2-7 15:15:25 | 显示全部楼层 |阅读模式
我想用getch()来测试按键,于是写了下面的代码:
//testkey.c源文件
#include<stdio.h>
#include<curses.h>

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
再往下执行的话程序就退出了。

我试了N遍,都是这个样子,实在没辙了,请问这个curses.h中定义的函数到底该如何使用啊?
发表于 2006-2-7 18:23:57 | 显示全部楼层
getch是ncurses里的函数,要用ncurses函数是要先初始化的。
用getchar
回复

使用道具 举报

 楼主| 发表于 2006-2-7 23:06:46 | 显示全部楼层
谢谢斑竹提示,必须要用getch()函数。刚刚查到帮助,已经知道如何初始化了,确实麻烦,连printf也没法用了:-(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 22:36 , Processed in 0.039027 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表