首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux上getch()出有关问题了

2012-11-06 
linux下getch()出问题了我在linux下编写如下代码段:#include curses.h#include stdio.hintmain(void){

linux下getch()出问题了
我在linux下编写如下代码段:
#include <curses.h>
#include <stdio.h>
int
main(void)
 {
  char ch;
  printf("Input a char:");
  ch = getch();
  printf("\nYou input a %c\n", ch);
  return 0;
 }
利用gcc -o testgetch testgetch.c -lcurses编译后无错,运行,并没有出现等待输入字符的情况,而是程序直接运行结束,网上也没找到出现这种情况的原因,望高手指教。
这就是运行状况:(运行后我没按任何键就变成这模样了)
[smellybb@localhost mycat]$ ./testgetch 
Input a char:
You input a ?
[smellybb@localhost mycat]$
gdb调试的结果是ch值为-1,感觉程序压根就没执行getch(),实在是理解不上去了……

[解决办法]
都使用curse了

无法使用console的东西了

至少我没这么干过
[解决办法]
你用:

#include<stdio.h>
#include<conio.h>

int 
main(void) 

char in; 
printf("Input a char:"); 

fflush(stdin); 
in = getchar(); 

printf("\nYou input a %c\n", in ); 

getch(); /*等待输入任一键*/ 

return 0; 




[解决办法]

C/C++ code
#include  <curses.h>#include  <stdio.h>intmain(void) {     char ch;     printf("Input a char:");     ch = getchar();      printf("\nYou input a %c\n", ch);     return 0; }
[解决办法]
<curses.h>
它的问题,我记得它有自已的输入输出函数,并且屏闭了<stdio.h>中的I/O函数
[解决办法]
C/C++ code
#include <stdio.h>#include <curses.h>int main(void){        char ch;        printf("Input a char: ");        initscr();        cbreak();        noecho();        ch = getch();        endwin();        printf("You input a %c\n", ch);        return 0;}建议man ncurses
[解决办法]
C/C++ code
getch()是个不可移植的函数,可以自己模拟出来一个。测试代码如下:[root@cv0005759d1 stack]# cat testgetch.c #include <stdio.h>#include <termios.h>#include <unistd.h>#include <assert.h>#include <string.h>int getch(void);int main(void){        char ch;               printf("Input a char:");        fflush(stdin);        ch = getch();        printf("\nYou input a %c\n", ch);        return 0;}int getch(void) {        int c=0;        struct termios org_opts, new_opts;        int res=0;        //-----  store old settings -----------        res=tcgetattr(STDIN_FILENO, &org_opts);        assert(res==0);        //---- set new terminal parms --------        memcpy(&new_opts, &org_opts, sizeof(new_opts));        new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);        tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);        c=getchar();            //------  restore old settings ---------        res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);assert(res==0);        return c;}[root@cv0005759d1 stack]# gcc testgetch.c -o testgetch[root@cv0005759d1 stack]# ./testgetch Input a char:You input a k[root@cv0005759d1 stack]# 

热点排行
Bad Request.