为什么我运行程序后窗口一闪而过就没了
2013-11-07 09:53
162 查看
为什么会这样?原因简单到有点可笑:因为程序运行结束了
对于控制台程序,操作系统让它开始运行前会为它造一个控制台窗口,在它结束的时候为它销毁这个这窗口.所以,当程序的最后一条语句运行完后,没什么可做了,程序运行结束,窗口就没了
一般做法有这些:
getchar()可以等待你输入一个字符,这样可以让程序等待在那
system("pause")执行系统的pause命令,它也会等你
另外还有个特殊的:
如果你是在IDE里编写完了程序,想要看运行结果,那你可以按Ctrl+F5来运行程序,那样即使你不使用上面的两条语句,也可以看见程序运行完后窗口没有消失
这是为什么呢?
对于普通的做法,即按F5,IDE会直接启动编译成的exe,这和你双击一个exe启动它是等效的,而对于Ctrl+F5,IDE做的事有些不一样,它会去启动cmd.exe,也就是什么 命令提示符 那个程序,然后告诉它去运行编译好的程序.cmd.exe的行为是这样的,它启动其它程序时会把自己的这个控制台(它自己也是个控制台程序)借给这个程序使用,你的程序运行起来后就向这个控制台打印东西.等你的程序运行结束了,cmd.exe再得回控制权.注意,这时你的程序结束了,但cmd.exe还没有结束.而cmd.exe有个行为,就是会在它所启动的程序运行完后等待用户按个键.也就是你看见的"请按任意键继续..",或是"Press
any key to continue..",显然,这行字并不是你的程序打印的
对于这点,你可以自己启动cmd.exe试试
最后..虽然getchar和system("pause")效果看上去一样,但是..system("pause")是很浪费的,是大材小用.使用getchar()就行了.至于为什么这样,这里就不解释了
为什么VS中用CTRL+F5(执行不调试)没问题,但在wxDev-C++中用Run without Debugging怎么不行(就直接退出了)?——只要是让编译出的程序脱离IDE的监护去运行,就称得上Run without debugging.所以"是不是with
debugging"和"是不是会直接退出"是毫无关系的
只是在VS,它对Run without debugging的做法"恰巧"是让生成的程序运行在cmd.exe上,而cmd.exe正有那样的特性,所以..
而wxDev-c++也许(wxDev-c++我没有使用过)只是简单地让生成的程序运行起来,所以Run without debugging时看起来程序会直接退出(这并不妨碍它可以称作"Run without debugging")
你的程序是不是没有输入什么的,只是 一些 固定值的操作,因为计算机运行速度的关系...当然是一闪而过... 加 头文件 <stdlib.h> 然后再 return 之前 加上 system("pause")//这是调用系统 操作,这句话是现实系统信息,这样的话,程序会在这条语句上运行 在DOS界面显示系统信息,达到了暂停的作用 ,按回车键 会 继续执行下一句话,如果加载最后就会 退出 程序了~
直接双击.exe文件窗口一闪而过这是正常的,因为它属MS-DOS应用程序,而非windows应用程序。要想让其停留,只要让程序陷入等待状态就行了,例如等待输入,在程序最后加一句 cin >> a;(a变量须申明)
或者还有方法是:
getchar()(); //等待输入回车再结束
因为你的运行窗口在程序一结束就关闭了,所以要加一个等待键,才能保证窗口不关闭
相关文章推荐
- 为什么我运行程序后窗口一闪而过就没了
- Visual Studio 运行程序时,结果画面为什么会一闪而过?
- C++程序运行完后不让窗口一闪而过的方法
- 为什么OGRE程序以窗口模式运行会出错?
- C++程序编译运行后窗口一闪而过问题
- C++程序编译运行后窗口一闪而过问题
- VC++2005运行Win32控制台程序时,为什么弹不出控制台窗口(无法看到运行结果)?
- 关于vs2010运行C程序时,运行结果窗口一闪而过的问题
- vs2010运行C程序时,运行结果窗口一闪而过
- .NET入门(三)运行窗口(Console)程序,窗口为何一闪而过,如何不关闭?
- zendframework搭建为什么cmd窗口是这样的,"php.exe"' 不是内部或外部命令,也不是可运行的程序
- 程序运行完后不让窗口一闪而过
- 关于vs2010运行C程序时,运行结果窗口一闪而过的问题
- VS2010控制台程序运行窗口一闪而过
- C++程序编译运行后窗口一闪而过问题
- C++避免程序运行完后窗口一闪而过的方法
- 运行程序时命令窗口一闪而过
- VS编译器程序运行窗口一闪而过?教你一招!
- C++避免程序运行完后窗口一闪而过的方法
- VC++2005运行Win32控制台程序时,为什么弹不出控制台窗口(无法看到运行结果)?