最近我看到有些人在想要让他们的程序延时的时候使用了system(“pause”)。我不知道是谁教给他们的这种方法,但这肯定不是一个好的习惯。通过调用system()函数,程序会调用默认的shell(命令行解释器)程序,然后shell程序会执行给定的命令行参数(在这个例子中是“pause”)。也就是说它会执行“pause.exe”程序。现在简单的c程序要依赖两个外部的程序来完成一个类似“按任意键继续”这样一个功能。想象一下,假如现在有人删除或重命名了“pause.exe”又会怎么样呢?假如有人想要在UNIX或者Mac上编译你的程序又会怎么样呢?你的程序会出错,你会得到一个令人讨厌的shell信息而不是pause这个功能。为什么本来能够用c语言本身实现的功能非得要调用两个外部程序呢

对于要开始实现这个功能的人,这里有一个用c语言实现同样功能的代码

Code:

#ifndef WIN32
#include <unistd.h>
#endif

#ifdef __cplusplus
#include <iostream>
#ifndef WIN32
#include <stdio.h>
#endif
using namespace std;
#else
#include <stdio.h>
#endif

#define WAIT_MSG "press enter to continue..."

/*
note that the function "pause" already exists in <unistd.h>
so i chose user_wait() for it.
*/
void user_wait()
{
int c;

#ifdef __cplusplus
cout << WAIT_MSG << endl;
#else
printf("%s/n", WAIT_MSG);
#endif
/* eat up characters until a newline or eof */
do
{
c = getchar();
if(c == EOF) break;
} while(c != '/n');
}

int main(int argc, char *argv[])
{
printf("hello/n");
user_wait();
printf("goodbye/n");
return 0;
}

使用这个代码的主要问题是控制台io通常是line buffered的终端,所以要用回车键代替任意键。有一些根据具体系统的方法来替代这个方法(“pause.exe”就是这样做的),但是这段代码对于大多数系统来说是可移植的。

关于system(pause)相关推荐

  1. system pause in C#

    方法一: Console.Write("Press any key to continue . . . "); Console.ReadKey(true); 注:也可用ReadLi ...

  2. kbhit(), bioskey(), system(pause)

    2017.09.18 kbhit(), bioskey(), system("pause") #include<iostream> #include<conio. ...

  3. C++之 system(“pause“); 与 getchar(); 防止控制台闪退

    在使用宇宙开发神器时,我们发现控制台在弹出后以极快的速度闪退,怎么办? 方法一: 在 return 0 之前添加 getchar(); #include<iostream> using n ...

  4. C++中的system(pause);

    在进行Visual Studio 下的C/C++编程的时候,在运行程序查看输出效果时,会出现窗口闪一下就关闭的情况. 在C语言中一般通过添加getchar(); 在C++中一般在main函数中的ret ...

  5. system pause

    使用一些IDE(Visual C++,Dev C++等等)编写C/C++程序,经常会看到程序的执行结果一闪而过, 为了查看程序的执行结果,可以在代码的最后加上 system("pause&q ...

  6. c++中的system(pause)的作用

    作用: system就是调用从程序中调用系统命令(和shell命令). system("pause")就是从程序里调用"pause"命令: 而"pau ...

  7. system(pause)详解

    在编程语言中出现system,就是从程序中调用系统命令(和shell命令),而 system("pause")就是从程序里调用"pause"命令:   而&qu ...

  8. C语言中system(pause)

    system("pause")就是从程序里调用"pause"命令,而"pause"这个系统命令的功能很简单,就是在命令行上输出一行类似于&q ...

  9. system(“pause“)的作用

    system("pause")是暂停的意思,等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果. 注:如果是c++程序,头文件直接使用 #include <iost ...

  10. system pause 作用

    system("pause") system("PAUSE") 是暂停的意思,等待用户信号:不然控制台程序会一闪即过,你来不及看到执行结果. 头文件 #incl ...

最新文章

  1. C++Bitonic Sort双调排序/比并排序的实现算法(附完整源码)
  2. android加载刷新进度条,android – 在Activity加载时显示进度条
  3. RH124-3 目录结构_转
  4. Cacls命令使用格式
  5. Hemberg-lab单细胞转录组数据分析(七)-导入10X和SmartSeq2数据Tabula Muris
  6. html 图片旋转插件,jQuery插件expander实现图片翻转特效
  7. WINDOWS 下将 FAT OR FAT32 转换成 NTFS 格式
  8. 微软的补丁服务器,Microsoft 安全公告 MS17-010 - 严重
  9. android谷歌打印插件下载地址,谷歌浏览器打印插件:Print Plus
  10. 数据处理——偏最小二乘法
  11. c1xx : warning C4199: C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase-
  12. Centos 7硬盘扩容
  13. CancelledError: [_Derived_]RecvAsync is cancelled.
  14. Day 23 What Drivers You Crazy
  15. 【android开发】手机应用管理器的实现之获取应用列表(一)
  16. 批量下载文件,打包成zip压缩包
  17. LMDB数据生成与解析
  18. 2019/2/3摄氏一华氏温度转换表
  19. 2021年中国空气净化器市场现状分析,线上趋势明显,市场渗透率仍有较大发展空间「图」
  20. 字符串处理函数C语言

热门文章

  1. 旺店通·企业奇门与用友BIP旺店通销售出库单对接销售订单
  2. 获取今日时间范围区间
  3. 苹果刷机未知错误75_苹果iPhone6用iTunes刷机报错未知错误53解决方法
  4. WPF入门第三篇 ControlTemplate、Trigger与Storyboard
  5. Java虚拟机讲解 与 搞垮Java虚拟机
  6. 中国制造网(made-in-china)的排名技巧
  7. VC 开机自动启动程序代码 [转]
  8. vertical-align属性的简单理解
  9. Memcache教程
  10. Android面试题目及其答案