| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2249 人关注过本帖
标题:这个程序中getch() 与getchar()有什么区别,
只看楼主 加入收藏
Quavarion
Rank: 2
等 级:论坛游民
帖 子:60
专家分:28
注 册:2009-10-9
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:6 
这个程序中getch() 与getchar()有什么区别,
/* 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,
则继续判断第二个字母。
 */  我是这样做的:
#include<stdio.h>
void main()
{
   char a;
    printf("Please input:\n");
    scanf("%c",&a);
   switch (a)
    { case 'm': printf("monday\n");   break;
      case 'w': printf("wednesday\n");   break;
      case 'f': printf("friday\n");      break;
       case 't':  if((getch()=='u'))
                   printf("tuesday\n");
                    else if((getch()=='h'))
                    printf("thursday\n");  break;
       case 's' :   if(getch()=='a')
                      printf("saturday\n");
                  else printf("sunday\n");

     }
       getch();

}
但如果把 if((getch()=='u')) 中getch()改为getchar()后(当然还有其他getch()),不能得出正确的结果,为什么呢?
搜索更多相关主题的帖子: getchar 
2009-11-06 22:48
タンポポ
Rank: 2
等 级:等待验证会员
帖 子:30
专家分:97
注 册:2009-11-6
收藏
得分:0 
getch()从控制台读取一个字符,但不显示在屏幕上
getchar()从标准输入流读取一个字符并回显,读到回车符时退出
2009-11-06 22:51
タンポポ
Rank: 2
等 级:等待验证会员
帖 子:30
专家分:97
注 册:2009-11-6
收藏
得分:10 
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
2009-11-06 22:54
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
当你用getch()时,你输入的字符不会显示在显示器上就送给电脑了,而个人getchar()则是先敲一个字符,这个字符就出现在屏幕上,但此时这个字符并没有送给电脑,当你按回车键时,这个字符才送给电脑。
2009-11-06 22:57
Quavarion
Rank: 2
等 级:论坛游民
帖 子:60
专家分:28
注 册:2009-10-9
收藏
得分:0 
我用的是win-tc 在运行这个程序时,只能用 getch() ;
而在这个简单的程序:
#include<stdio.h>
void main()
{

  if((getch()=='a'))   printf("hello");
  getch();
}
中getch()可以改为getchar();
这又是为什么呢
2009-11-06 23:28
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
它的作用仅仅是使程序停止下来,方便你查看结果而已。用什么都无所谓,即使用 scanf 也是一样的。
2009-11-06 23:44
刘月华
Rank: 2
等 级:论坛游民
帖 子:7
专家分:19
注 册:2009-11-6
收藏
得分:10 
我觉得你之所以用getchar()不能成功是因为,你在前边输入的时候肯定是直接输了一个字符然后敲得回车,
现在回车还在输入缓冲区中,所以,getchar()会直接读取。由于是回车,所以,它不会匹配谁的。
至于,getch()需要键盘操作才会收到字符,所以,不会出现问题。
2009-11-07 00:17
快速回复:这个程序中getch() 与getchar()有什么区别,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040830 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved