gpt4 book ai didi

c++ - 标准输入流 (stdin) 的文件结尾 (EOF)

转载 作者:IT老高 更新时间:2023-10-28 22:17:32 33 4
gpt4 key购买 nike

stdin 有 EOF 吗?例如,如果我开始使用 freadread 从标准输入读取,那么下面的循环会结束吗?

while ((c = read(0, buffer, BUFSIZ)) > 0) {
.
.
.
}

如果这个问题的答案是否定的,那么有没有办法在标准输入中添加EOF?

最佳答案

谈到标准输入中的EOF:当你从文件重定向输入时,例如:

program <input.txt

文件已经有一个EOF,所以这不是问题。在控制台中,您可以模拟 EOF 标志。在 UNIX 系统中是 Ctrl+D,在 Windows 中是 Ctrl+Z。当您在控制台中键入此内容时,程序的行为就像它刚刚到达输入文件的末尾。


编辑

根据 OP 提出的问题:

So does it means that stdin don't have EOF and we have to insert them manually using Ctrl+Z or Ctrl+D?

实际上——是的。人们可能会将标准输入(不是重定向,而是从控制台获取)视为 infinite 文件——没有人知道它在哪里结束。输入文件的结尾,即输入 ist stdin,必须由 Ctrl+DCtrl+Z.

关于c++ - 标准输入流 (stdin) 的文件结尾 (EOF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197025/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com