49 C语言程序的暂停

来源:互联网 发布:cx域名不值钱吗 编辑:程序博客网 时间:2024/06/05 16:29

C学习网:链接->C学习网

C训练网:链接->C训练网

先来看一段简单的C语言代码:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("C语言中文网\n");
  5. return 0;
  6. }
在 VC6.0、C-Free 下点击“运行”按钮,会看到如下的效果:


程序运行到最后会自动暂停,并添加一行提示“请按任意键继续...”。用户按下键盘上的任何一个键,程序就退出了。而当我们在VS下点击“运行”按钮时,或者在工程目录下找到生成的 .exe 程序双击运行时,却只能看到一个黑影一闪而过。这是为什么呢?

main() 是程序的入口函数,同时也是退出函数。程序从 main() 开始执行,main() 结束时就退出,也即销毁进程。上面的代码中,仅有一条输出语句,没有暂停语句,程序运行到最后就会自动关闭,这是正常的流程。由于程序从执行到退出的时间非常短,窗口出现后瞬间消失,所以只能看到一道黑影。

而在 VC6.0、C-Free 下点击“运行”按钮时,IDE 会自动添加暂停功能,所以程序不会立即退出。这也迷惑了部分初学者,让大家误以为C程序本来就应该暂停的。其实不然,对于上面的示例,一闪而过的黑影才是正常的流程。

自己添加暂停功能

VC 6.0、C-Free 自动添加的暂停功能给我们提供了方便,让我们能够查看程序的运行结果。但如果在VS下运行程序,或者希望将自己的 .exe 程序分享给朋友,那就必须手动添加暂停功能。

添加暂停功能有两种思路:一种是真正的暂停,两外一种是模拟暂停效果。

1) 使用 system() 函数

system() 函数位于 stdlib.h 头文件,用来执行系统命令,也就是 Windows 下的 DOS 命令,或 Linux 下的 Shell 命令。

在 Windows 下,pause 命令用来暂停程序的执行,代码如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. printf("C语言中文网\n");
  6. system("pause"); // pause不区分大小写,也可以写作PAUSE
  7. return 0;
  8. }
在 VS 下点击“运行”按钮,或者双击生成的 .exe 运行,效果如下:


在 VC6.0、C-Free 下点击“运行”按钮的效果:


pause 是 DOS 下的命令,所以system("pause");只适用于Windows。而 Linux 下的 Shell 没有类似的命令,所以使用 system() 函数暂停程序比较困难。

2) 模拟暂停功能

所谓暂停,无非是先输出提示语句,再等待用户输入,我们可以用C语言中的输入输出函数来模拟。请看下面的代码:
纯文本复制
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int main()
  4. {
  5. printf("C语言中文网\n");
  6. //模拟暂停功能
  7. printf("按任意键继续...");
  8. getch();
  9. return 0;
  10. }
第7行代码用来输出提示语,第8行代码用来等待用户输入,但不显示输入内容。读者也可以更改提示语,或者将第7行代码删除。

由于 conio.h 是Windows下的头文件,Linux下没有,所以这种方式也只适用于Window。

总结:上面是Windows下常用的两种暂停程序的方法,读者可以根据自己的喜好来选择。

最后需要说明的是,Linux 下的C程序一般是通过终端(Terminal)来运行,程序关闭后会留下输出结果,所以不需要暂停功能,这里也就不再讲述了。


原创粉丝点击