system(“pause”)和getchar()

大家都知道system(“PAUSE”)可以让C程序在运行结束之前暂停运行。用system(“PAUSE”)可以解决运行程序一闪而过,看不到输出结果的问题。有程序员会用system(“PAUSE”)只是为了能够让程序暂停,以便看到运行的结果。这就好比用大炮打蚊子杀鸡用牛刀。那么system(“PAUSE”)语句究竟怎么运行呢?

下面是关于system(“PAUSE”)的一些观点:

1.平台相关性。system(“PAUSE”)只限于有PAUSE系统命令的操作系统。像DOS系统或者Windows系统。但是在Linux或其他系统却不能,因此不具有可移植性。

2.资源消耗大。虽然可以起到暂停程序的效果,但是在这过程中,程序却占用了大量资源。 那么system()的运行过程是怎么样呢?

(1)暂停程序

(2)调用操作系统内核

(3)打开一个系统子程序

(4)查找系统命令PAUSE

(5)分配内存给PAUSE命令,并执行

(6)等待键盘输入

(7)释放PAUSE内存

(8)退出操作系统

(9)返回程序

3.为了执行system(“PAUSE”),需要加入stdlib.h,造成程序冗余。

解决方法:可以用getchar()或者 std::cin.get代替system(“PAUSE”) 。

system(“pause”)和getchar(),布布扣,bubuko.com

时间: 2024-12-22 08:18:03

system(“pause”)和getchar()的相关文章

解决C、C++程序执行结果一闪而过的方法---system("pause")、getchar()、cin.get()

在VS编写控制台程序的时候,包括使用其他IDE(Visual C++)编写C/C++程序,经常会看到程序的执行结果一闪而过,要解决这个问题,可以在代码的最后加上system("pause").getchar().cin.get(). 比较常用的做法是使用system("pause"),这篇文章 Things to Avoid in C/C++ -- system("pause") 不推荐使用"system("pause&quo

枚举系统磁盘驱动器(使用GetLogicalDriveStrings API函数,system("pause"); 很实用,还用到wcslen等函数)

代码如下: [cpp] view plain copy #include "stdafx.h" #include <vector> #include <string> #include <Windows.h> #include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) { TCHAR  drives[128];             //存储所以驱动器名称 wchar_t* pDriv

ubuntu下vscode认识 system(&quot;pause&quot;)的解决办法

linux下运行c++程序时,希望控制台不会输出后马上消失. 在windows系统下,用如下语句: #include <cstdlib> system("pause"); 发现在linux系统下会出现如题的错误,这是因为linux不认识 system("pause"); 这条语句,改为: #include <unistd.h> pause(); 即可在linux系统下实现保留控制台的效果. ———————————————— 原文链接:http

sublime C++ build system配置体验

近期准备实习,于是终于步入了sublime的阵营,sublime确实性感. 在配置win7下C++编译运行集成环境的时候遇到点问题,于是接触了一下JSON格式,最后终于自己搞定了.. 参考文档:http://sublime-text.readthedocs.org/en/latest/reference/build_systems.html 其实最终是在C++.sublime-build里写以下东西就好了(tools->build system->new build system) { &qu

窗口迅速关闭的解决办法/scanf/if/for/break

break if的格式 if(a>b) { printf("max=%d\n",a); } else printf("max=%d\n",b); scanf("%s", str2); 窗口迅速关闭的解决办法 刚接触 Visual Studio的时候大多数人会写个Hello World的程序试一下,有的人会发现执行结束后输出窗口会一闪而过,并没有出现Press any key to continue的字样.无论是在Visual Studio

保持VISUAL STUDIO控制台驻留不闪退

当建立了win32 console project后,F5运行后,本来想看到console中printf出来的信息,可是cmd窗口一闪而过.下面是保持visual studio 跳出的cmd窗口驻留的两种方法,根据需要选择不同的方式. 方法一:  在代码中加入 1 system("pause") 2 getchar() 方法二:  不要用debug模式(F5),而用without debug模式(Ctrl+F5)来运行程序. 值得说明的是,如果Ctrl+F5仍然无法保持console驻

Vs2012编写C语言

本来我也是用VC++6.0编写C语言的,但是由于这个版本过老并且和win7,win8,win10的不兼容所以去下载了vs2012,一开始的时候不知道怎么用,现在学会了就写一个教程分享一下. 这时就遇到一个问题,VS2012一运行控制台程序,控制台就闪退,这种情况在VS2008和VS2010这两版本不存在,VS2012这个版本需要通过语句或者断点加以中断,语句可用getchar()或者 system("PAUSE")或者随便一句输入语句或者增加断点.system("PAUSE&

学C第4天上(溢出、随机数)

一.溢出 1.short类型 数据使用必须在范围内,否则无符号产生溢出,有符号出错. 1      print("short极大值%d","short极小值",SHRT_MAX,SHRT_MIN);//32767,-32767  2      print("unsigned short极大值%d","unsigned short极小值",USHRT_MAX,0);//65535,0  3   4      unsigned s

Visual Studio控制台程序输出窗口一闪而过的解决方法

写个Hello World的程序试一下,发现执行结束后输出窗口会一闪而过,并没有出现Press any key to continue的字样.无论是在Visual Studio 2008.2010还是2012中都有这种情况出现,有些人可能会用下面两种方法中的一种: 在程序代码的最后加上system("pause")或者getchar().其实这是属于dos下的命令. 其实问题是你执行时按的是F5,而正确的应该是Ctrl+F5,这样窗口就会显示 Press any key to cont

std::sort()

原文地址:http://blog.csdn.net/factor2000/article/details/3936195 1 #include "stdafx.h" 2 #include <vector> 3 #include <algorithm> 4 #include <functional> 5 #include <iostream> 6 7 using namespace std; 8 9 //Return whether fir