在VC++中为什么C程序运行后答案一闪而过来不及看清

使用VC++运行C程序时,为什么运行后答案一闪而过来不及看清?怎样设置才能使命令行窗口停下来,而不是自动快速关闭?... 使用VC++运行C程序时,为什么运行后答案一闪而过来不及看清? 怎样设置才能使命令行窗口停下来,而不是自动快速关闭? 展开
 我来答
王拔沃尔云
2019-12-13 · TA获得超过3912个赞
知道大有可为答主
回答量:3154
采纳率:34%
帮助的人:174万
展开全部
先解释一下为什么一闪而过:
当你在vc++里运行程序,vc++将会调用行命令模式(即command.com程序),打开你的程序。当程序执行完毕后将自动退出行命令模式。所以你来不及看你的程序的输出。
要解决这个问题,最简单的方案就是在你的代码的最后,return
0;之前,加上
getchar();
//getch()似乎不是ANSI
C的一部分
这个语句将使得你的程序做最后一件事情:从输入缓冲区(输入流stdin)中读一个字符。也就是说在你的其他程序结束后,还要敲一下回车才会结束所有程序。
但是,要注意的是:当程序快结束时,如果你的输入缓冲区中已经有字符了,c语言将直接从缓冲区中读取一个字符,然后结束程序。而不等待你的输入。
比如:
#include<stdio.h>
int
main(void)
{
putchar(getchar());
//你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出
getchar();//这是你为了防止一闪而过而加的语句
return
0;
}
这个程序结束时将仍然一闪而过。原因在于第一条getchar()表达式执行的时候,将返回你输入的第一个字符,后面的字符(包括回车字符'\n')留在了缓冲区。要解决这类问题,得随机应变,没有统一的解决方案。在这个例子中,可以这样:
#include<stdio.h>
int
main(void)
{
putchar(getchar());
//你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出
while(getchar()!='\n')
continue;//这个循环将把输入缓冲区的内容清掉,一直清到换行符。
getchar();//这是你为了防止一闪而过而加的语句
return
0;
}
复杂一点的解决方案是,不要在visual
c++中执行。你先生成可执行文件,然后打开行命令模式(运行->cmd),然后在那里运行你的程序,就不会自动退出了。
sorry,刚才试了一下,ctrl+f5确实可以,parason说的很对。
本想不发了,但是写了半天,不发也可惜,况且,从我写的这些,你可以更加理解一些原理性的东西。而且,我写的是一个通用的办法,即使不是visual
c++也可以用。
不过最佳答案千万别选我,因为我的答案和parason的比起来确实很愚蠢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式