stdin是否有EOF?例如,如果我开始使用fread
或read
从stdin中读取内容,那么以下循环会结束吗?
while ((c = read(0, buffer, BUFSIZ)) > 0) {
.
.
.
}
如果对这个问题的回答是否定的,那么有什么方法可以将EOF添加到stdin中?
最佳答案
谈到stdin中的EOF
:当您从文件重定向输入时,例如:
program <input.txt
该文件已具有
EOF
,因此这不是问题。在控制台中,您可以模拟EOF
标志。在UNIX系统中,它是Ctrl + D,在Windows中是Ctrl + Z。当您在控制台中键入此命令时,程序的行为就像刚到达输入文件的末尾一样。编辑
根据OP提出的问题:
其实,是。可以将stdin(未重定向,但从控制台获取)视为无限文件-没有人知道它在哪里结束。输入文件的末尾,即输入ist stdin,必须通过Ctrl + D或Ctrl + Z从字面上告诉。
关于c++ - 标准输入流(stdin)的文件结尾(EOF),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3197025/