C语言中的getch函数

我测试过程序,getch()不会读取缓冲区里的字符,求解释。而且如果在getch()后还有scanf语句,程序运行至getch按任意键结束程序,而下面的scanf则无法输... 我测试过程序,getch()不会读取缓冲区里的字符,求解释。而且如果在getch()后还有scanf语句,程序运行至getch按任意键结束程序,而下面的scanf则无法输入和运行了?这到底是怎么回事?
#include<stdio.h>
#include<conio.h>
int main()
{
int a;
char c,ch;
scanf("%c",&ch);
printf("%c",ch);
c=getch();
printf("%c",c);
return 0;
}
输入abc回车,输出a。这个时候程序运行到printf("%c",ch);而缓冲区中还有bc回车,这个时候为什么c=getch();不读入b,而是等待输入呢?如果此时继续输入任意字符,比如a,那么会输出a,因为
有printf("%c",c);这句,网上资料说,执行完getch()会自动往下执行。但是如果我在printf("%c",c);后面再加一句scanf("%c",&ch);那就无法执行scanf("%c",&ch);了,屏幕显示a后就立刻结束了,也就是
执行完printf("%c",c);后结束程序,跳过了scanf("%c",&ch);。就是以上两个问题。
展开
 我来答
南方飞虹
推荐于2017-09-18 · 知道合伙人教育行家
南方飞虹
知道合伙人教育行家
采纳数:38640 获赞数:304516
大学本科毕业,从事生产类开发工作,兼职本地一培训机构为中学生辅导数学等课程。

向TA提问 私信TA
展开全部
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
道初潜珉
2019-06-23 · TA获得超过4024个赞
知道大有可为答主
回答量:3180
采纳率:34%
帮助的人:166万
展开全部
ctrl,
alt和字母、数字、标点符号、空格回车删除不一样,它们不是字符,也就不难怪不能被getch读到了。貌似要监视这两个键,c还不行,因为c只是为基础设计而生,如果要牵涉到UI方面可能需要VC,Java这些语言了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
推荐于2017-10-02 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5790万
展开全部
你getch按任意键结束程序,当然下面的语句都不起作用了。
getch() 即时读一字符,不需等待Enter 键的到来。scanf 要等待 Enter 键的到来 (若 输入缓冲区内已有内容,就可以不等待)。
main()
{
char ch;
int x;
ch = getch();
scanf("%d",&x);
printf("ch=%c x=%d\n",ch,x);
}
拍入 s123 回车
输出 ch=s x=123
更多追问追答
追问
#include
#include
int main()
{
int a;
char c,ch;
scanf("%c",&ch);
printf("%c",ch);
c=getch();
printf("%c",c);
return 0;
}
我的意思你好像没有理解。比如上面这个程序。
看上面补充
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
今日私人影院
2013-08-22 · TA获得超过470个赞
知道答主
回答量:44
采纳率:100%
帮助的人:18.5万
展开全部
把程序贴出看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式