先来看一段简单的C语言代码:
#include <stdio.h>
int main()
{
printf("城东书院\n");
return 0;
}
在 VC6.0、C-Free 下点击“运行”按钮,会看到如下的效果:
程序运行到最后会自动暂停,并添加一行提示“请按任意键继续...”。用户按下键盘上的任何一个键,程序就退出了。而当我们在VS下点击“运行”按钮时,或者在工程目录下找到生成的 .exe 程序双击运行时,却只能看到一个黑影一闪而过。这是为什么呢?
main() 是程序的入口函数,同时也是退出函数。程序从 main() 开始执行,main() 结束时就退出,也即销毁进程。上面的代码中,仅有一条输出语句,没有暂停语句,程序运行到最后就会自动关闭,这是正常的流程。由于程序从执行到退出的时间非常短,窗口出现后瞬间消失,所以只能看到一道黑影。
而在 VC6.0、C-Free 下点击“运行”按钮时,IDE 会自动添加暂停功能,所以程序不会立即退出。这也迷惑了部分初学者,让大家误以为C程序本来就应该暂停的。其实不然,对于上面的示例,一闪而过的黑影才是正常的流程。
VC 6.0、C-Free 自动添加的暂停功能给我们提供了方便,让我们能够查看程序的运行结果。但如果在VS下运行程序,或者希望将自己的 .exe 程序分享给朋友,那就必须手动添加暂停功能。
添加暂停功能有两种思路:一种是真正的暂停,两外一种是模拟暂停效果。
system() 函数位于 stdlib.h 头文件,用来执行系统命令,也就是 Windows 下的 DOS 命令,或 Linux 下的 Shell 命令。
在 Windows 下,pause 命令用来暂停程序的执行,代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("城东书院\n");
system("pause"); // pause不区分大小写,也可以写作PAUSE
return 0;
}
在 VS 下点击“运行”按钮,或者双击生成的 .exe 运行,效果如下:
在 VC6.0、C-Free 下点击“运行”按钮的效果:
pause 是 DOS 下的命令,所以system("pause");只适用于Windows。而 Linux 下的 Shell 没有类似的命令,所以使用 system() 函数暂停程序比较困难。
所谓暂停,无非是先输出提示语句,再等待用户输入,我们可以用C语言中的输入输出函数来模拟。请看下面的代码:
#include <stdio.h>
#include <conio.h>
int main()
{
printf("城东书院\n");
//模拟暂停功能
printf("按任意键继续...");
getch();
return 0;
}
第7行代码用来输出提示语,第8行代码用来等待用户输入,但不显示输入内容。读者也可以更改提示语,或者将第7行代码删除。
由于 conio.h 是Windows下的头文件,Linux下没有,所以这种方式也只适用于Window。
总结:上面是Windows下常用的两种暂停程序的方法,读者可以根据自己的喜好来选择。
最后需要说明的是,Linux 下的C程序一般是通过终端(Terminal)来运行,程序关闭后会留下输出结果,所以不需要暂停功能,这里也就不再讲述了。