关于文件结束符EOF

1,098 阅读1分钟

在《C程序设计语言》这本书里面,有很多函数(比如getlinereadlines等)都涉及到用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

再具体一点,以我自己电脑上的程序为例:

1629588003(1).png

  1. 先切换到D盘(如果你的程序文件就在C盘,就不用切换了):D:
  2. 进入到具体的程序所在文件夹:cd path
  3. 编译程序:gcc getchar.c -o getchar
  4. 运行程序:getchar

1629588448(1).png
如上图,程序运行之后,在新的一行输入Ctrl+Z,然后再按回车键,即可退出程序。 如果你不是在新的一行输入Ctrl+Z,比如你输入的是End the program.^Z再加回车,那么你需要再次输入Ctrl+Z加回车,才能退出程序。

1629588777(1).png

macOS系统

Ctrl+D

在macOS系统下面,可以使用Ctrl+D来触发EOF。同样以上面的例子为例:

微信图片_20210821195245.jpg 当你在新的一行,按下Ctrl+D,就能跳出main函数的while loop,结束程序。
如果你不是在新的一行输入Ctrl+D,你需要再次输入Ctrl+D,才能结束程序

微信图片_20210821195252.jpg

关于EOF的其它参考链接

blog.csdn.net/chenaibo/ar…