VC++2005运行Win32控制台程序时,为什么弹不出控制台窗口(无法看到运行结果)?

VC++中如果是按F5运行的话,表示以调试方式运行,如果遇到断点可以停下来,也可以单步调试、监视变量等。程序结束时立即退出。
如果是按Ctrl+F5运行的话,表示以独立的方式运行,即使遇到断点也不会停下来。但程序结束时会显示一个"按任意键继续"的东东,让你有足够的时间观察运行结果。

在Windows下的其他编译环境中,要达到类似效果的话,在程序的最后加上一句:
system("pause");
这个system函数包含在头文件stdlib.h(C++是cstdlib)里面。

方法1:使用CTRL + F5运行你的程序.
方法2:在程序结尾加上getchar()  or getch(),当然别忘了头文件conio.h.
方法3:在你的代码中插入 system("pause")看看 

先解释一下为什么一闪而过:
当你在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++也可以用。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值