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)还是闪现后消失
请问这分别是咋回事 展开
环境是dev-c++,做完后打开exe发现打开后窗口闪一下就消失了。
得知解决方法是用getchar或system。后者我已使用过解决了问题但前者不行。
如图1用了getchar 但做完程序打开exe 窗口仍闪完就没,跟没用一样
如图2,由于用了if else,所以我用2处getchar不知这样对否,如错请指出,但还是相同情况,exe窗口闪一下没。不过若把第二处的getchar放在它下方的大括号外,则if(a==1)却可以使窗口不消失 即按任意键才继续,反而if(a==0)还是闪现后消失
请问这分别是咋回事 展开
展开全部
因为你要通过scanf从标准输入读取一个整型值,但是你在标准输入却输入了"整型值“+”回车“,整型值被scanf读入,”回车“却停留在标准输入的缓冲区。你后面再调用getchar(),就会从标准输入的缓冲区读取到缓冲的”回车键“。故没机会从标准输入直接读取。
可以将你的程序修改,在scanf之后增加一个语句,把标准输入的缓冲区读完:
scanf("%d", &a);
while (getchar()!='\n') ;
可以将你的程序修改,在scanf之后增加一个语句,把标准输入的缓冲区读完:
scanf("%d", &a);
while (getchar()!='\n') ;
更多追问追答
追问
图1是咋回事为何也不行
追答
图1也是一样的,有个scanf(),导致标准输入缓冲区缓冲了一个“回车”。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打开窗口后闪退,是因为你编写的是控制台程序
程序执行完之后就退出了,也就造成了你所说的 闪退
想看执行结果,不让程序退出,可以在程序退出之前,加一个无线循环,或者
加:
system();语句
程序执行完之后就退出了,也就造成了你所说的 闪退
想看执行结果,不让程序退出,可以在程序退出之前,加一个无线循环,或者
加:
system();语句
更多追问追答
追问
我想问的是为啥getchar不行…
追答
getchar()是等待输入缓冲区中输入内容,
getchar()不行,是因为getchar()执行之前你输入内容内容了,
比如最后输入一个 换行,则这条语句读入了 换行 这个字符
执行完就结束了,也就是 你所说的不行
解决方法:你可以在getchar()之前加一条刷新输入缓冲区内容的语句试试:
fflush(stdin);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询