什么是EOF?

它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。

但程序里为了判断EOF通常都定义了函数或者变量,比如C语言里可以这样来判断字符是不是等于EOF

if (getchar() == EOF) {
  printf("It's end of file");
}

这个EOF是定义在stdio.h里的常量,通常是-1,因为文本对应的ASCII码都是正值,不可能有负值。

但是正常的文件读取到末尾就会遇到EOF从而结束读取,如这段代码

int c;

while ((c = getchar()) != EOF) {
  putchar(c);
}

printf("Read end");

但是标准的输入,比如交互命令下输入一段字符,于是就要有一个手动输入EOF字符告诉程序输入结束

  • Linux/Mac中,在新的一行的开头,按下Ctrl-D,就代表EOF
  • Windows中,Ctrl-Z表示EOF

那么,如果真的想输入Ctrl-D怎么办?这时必须先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号。Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了。

分享

TITLE: 什么是EOF?

LINK: https://www.qttc.net/251-what-is-eof.html

NOTE: 原创内容,转载请注明出自琼台博客