EOF 和标准输入流(stdin)
stdin 指的是标准输入流,通常代表用户从控制台的输入。与文件不同,stdin 没有固有的文件结束 (EOF) 指示符。这意味着使用 fread 或 read 等函数从 stdin 读取将无限期地继续,直到手动引入某种形式的 EOF。
要理解此行为,请考虑以下循环:
while ((c = read(0, buffer, BUFSIZ)) > 0) { // Processing logic }
这只要读取函数返回正值,循环就会继续从标准输入读取字符。但是,如果没有 EOF 指示器,循环将永远不会结束。
要向标准输入引入 EOF,用户可以通过不同方式模拟此标志:
输入此 EOF 命令后,程序的行为就像它已到达输入文件的末尾。因此,上面提到的循环将终止。
编辑:对 Stdin 的 EOF 的澄清
根据最初的问题,人们可能想知道 stdin 是否本质上缺乏 EOF,如果必须使用 EOF 命令手动插入。答案是肯定的。
stdin,当不是从文件重定向而是直接从控制台获取时,可以被视为“无限”文件,因为它的结尾是不确定的。因此,这个“文件”的结尾必须由用户通过 EOF 命令手动传达。
以上是EOF 如何与标准输入流 (stdin) 配合使用以及如何手动引入它?的详细内容。更多信息请关注PHP中文网其他相关文章!