C语言 初学编程 关于getchar函数的问题 环境是dev-c++,做完后打开exe发现打开后窗

C语言初学编程关于getchar函数的问题环境是dev-c++,做完后打开exe发现打开后窗口闪一下就消失了。得知解决方法是用getchar或system。后者我已使用过... C语言 初学编程 关于getchar函数的问题
环境是dev-c++,做完后打开exe发现打开后窗口闪一下就消失了。
得知解决方法是用getchar或system。后者我已使用过解决了问题但前者不行。

如图1用了getchar 但做完程序打开exe 窗口仍闪完就没,跟没用一样
如图2,由于用了if else,所以我用2处getchar不知这样对否,如错请指出,但还是相同情况,exe窗口闪一下没。不过若把第二处的getchar放在它下方的大括号外,则if(a==1)却可以使窗口不消失 即按任意键才继续,反而if(a==0)还是闪现后消失
请问这分别是咋回事
展开
 我来答
豆菲特
2015-01-25 · TA获得超过332个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:130万
展开全部
因为你要通过scanf从标准输入读取一个整型值,但是你在标准输入却输入了"整型值“+”回车“,整型值被scanf读入,”回车“却停留在标准输入的缓冲区。你后面再调用getchar(),就会从标准输入的缓冲区读取到缓冲的”回车键“。故没机会从标准输入直接读取。
可以将你的程序修改,在scanf之后增加一个语句,把标准输入的缓冲区读完:
scanf("%d", &a);
while (getchar()!='\n') ;
更多追问追答
追问
图1是咋回事为何也不行
追答
图1也是一样的,有个scanf(),导致标准输入缓冲区缓冲了一个“回车”。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛牛牛不牛0720
2015-01-25 · TA获得超过342个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:350万
展开全部
打开窗口后闪退,是因为你编写的是控制台程序
程序执行完之后就退出了,也就造成了你所说的 闪退

想看执行结果,不让程序退出,可以在程序退出之前,加一个无线循环,或者
加:
system();语句
更多追问追答
追问
我想问的是为啥getchar不行…
追答
getchar()是等待输入缓冲区中输入内容,
getchar()不行,是因为getchar()执行之前你输入内容内容了,
比如最后输入一个 换行,则这条语句读入了 换行 这个字符
执行完就结束了,也就是 你所说的不行
解决方法:你可以在getchar()之前加一条刷新输入缓冲区内容的语句试试:
fflush(stdin);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式