问我有一个简单的小程序,它读取字符直到文件结束符(EOF),但实际上我该如何从键盘上输入那个“EOF”值呢?我看到EOF在<stdio.h>中定义为-1;我应该输入-1吗?
答如果你仔细想想,你输入的值不可能是-1,因为“-1”是两个字符,而getchar是一次读取一个字符。实际上,在你的 C 程序中看到的 EOF 值和你用来从键盘发出文件结束信号的按键组合基本无关。EOF 基本上是一个信号,告诉你的程序该输入源不再有可用的字符了,这是无论何种原因(磁盘文件结束、用户输入完毕、网络流关闭、I/O 错误等)。
根据你的操作系统,你可以使用各种按键组合来从键盘指示文件结束,通常是 Control-D 或 Control-Z。操作系统和 stdio 库会安排让你的 C 程序接收到 EOF 值。(但请注意,在此过程中涉及各种转换。在正常情况下,你不应该自己显式地检查 Control-D 或 Control-Z 的值,也不会发现<stdio.h>宏EOF被定义为这两个值中的任何一个。)