在VC++中为什么C程序运行后答案一闪而过来不及看清
使用VC++运行C程序时,为什么运行后答案一闪而过来不及看清?怎样设置才能使命令行窗口停下来,而不是自动快速关闭?...
使用VC++运行C程序时,为什么运行后答案一闪而过来不及看清? 怎样设置才能使命令行窗口停下来,而不是自动快速关闭?
展开
展开全部
先解释一下为什么一闪而过:
当你在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的比起来确实很愚蠢。
当你在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的比起来确实很愚蠢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询