当前位置: 代码迷 >> C语言 >> 求助:选择语句怎样才能不读入回车符
  详细解决方案

求助:选择语句怎样才能不读入回车符

热度:283   发布时间:2008-06-01 20:25:37.0
求助:选择语句怎样才能不读入回车符
例如这句代码,要输入a和一个回车才能执行switch,而这个回车符对以后的选择会有影响,怎样才能直接输入一个字符而不用回车即可执行?
while(1)
      {
       ch=getchar();
        switch(ch)
         {
           case 'a':
           case 'A': a_function();break;
           case 'b':
           case 'B': b_function();break;
           case 'c':
           case 'C': c_function();break;
           case 'd':
           case 'D': d_function();break;
           case 'e':
           case 'E': e_function();break;
           case 'f':
           case 'F': f_function();break;
           case 'q':
           case 'Q': exit(0);break;
搜索更多相关的解决方案: 语句  回车  选择  

----------------解决方案--------------------------------------------------------
没人知道吗?
----------------解决方案--------------------------------------------------------
救命呀!!!
----------------解决方案--------------------------------------------------------
清空缓冲区 fflush(stdin)   或者把接受写到循环外面 我着是对你问的回答...你的程序 有点小汗..
----------------解决方案--------------------------------------------------------
回复 4# yd4433 的帖子
清空缓冲区--怎样清空?
把接受写到循环外面 ????
有点小汗--->有很多程序都可以这样啊
----------------解决方案--------------------------------------------------------
清空缓冲区 fflush(stdin) 写在ch=getchar();下面
----------------解决方案--------------------------------------------------------
改为
while('\n' != (ch = getchar()))
{
    switch()
    ...
}
另外to 4#
LZ这个按键处理比较正常,没看到什么奇怪的地方。
不过最好加上default,来处理那些没有定义的按键。
----------------解决方案--------------------------------------------------------
[bo][un]yd4433[/un] 在 2008-6-1 22:33 的发言:[/bo]

清空缓冲区 fflush(stdin) 写在ch=getchar();下面

这样不行,都清空了就没法处理了。
----------------解决方案--------------------------------------------------------
那就写在最下面 . .
----------------解决方案--------------------------------------------------------
[bo][un]yjcf[/un] 在 2008-6-1 20:25 的发言:[/bo]

怎样才能直接输入一个字符而不用回车即可执行?

...

这个可以用键盘中断。bioskey();
----------------解决方案--------------------------------------------------------
  相关解决方案