在《C程序设计语言》这本书里面,有很多函数(比如getline
、readlines
等)都涉及到用EOF
来终止某个操作或整个程序。在不同的操作系统下面,触发EOF
的方式不一样。
代码示例
下面是一个简单的C语言程序:
#include <stdio.h>
int main() {
int c;
while((c = getchar()) != EOF)
putchar(c);
return 0;
}
问题是,我们如何来触发EOF,从而终止程序?
编译程序
gcc getchar.c -o getchar
Windows系统
Ctrl+Z加回车
在Windows系统下,编译之后会生成main.exe,我们可以用cmd来运行,运行指令就是可执行文件的文件名,不需要加.exe后缀:
getchar
再具体一点,以我自己电脑上的程序为例:
- 先切换到D盘(如果你的程序文件就在C盘,就不用切换了):
D:
- 进入到具体的程序所在文件夹:
cd path
- 编译程序:
gcc getchar.c -o getchar
- 运行程序:
getchar
如上图,程序运行之后,在新的一行输入Ctrl+Z,然后再按回车键,即可退出程序。
如果你不是在新的一行输入Ctrl+Z,比如你输入的是End the program.^Z
再加回车,那么你需要再次输入Ctrl+Z加回车,才能退出程序。
macOS系统
Ctrl+D
在macOS系统下面,可以使用Ctrl+D
来触发EOF
。同样以上面的例子为例:
当你在新的一行,按下Ctrl+D
,就能跳出main函数的while loop,结束程序。
如果你不是在新的一行输入Ctrl+D
,你需要再次输入Ctrl+D
,才能结束程序。