在编程中,常见的输入源是标准输入流(stdin),它从用户键盘读取输入。然而,确定用户何时完成输入数据并到达文件末尾 (EOF) 有时可能具有挑战性。
stdin 有 EOF 吗?
默认, stdin 本质上没有 EOF。这意味着从 stdin 读取的程序将无限期地继续,等待用户的更多输入。
将 EOF 添加到 stdin
如果需要手动模拟 EOF在 stdin 上,两种常见的方法是:
示例:
以下代码片段使用 fread 从 stdin 读取数据,并使用 Ctrl D 检查 EOF:
<code class="c">#include <stdio.h> int main() { char buffer[BUFSIZ]; int c; while ((c = fread(buffer, sizeof(char), BUFSIZ, stdin)) > 0) { // Process input... } return 0; }</code>
当用户按下 Ctrl D 时,fread() 函数将返回 -1,表示文件结束。这会触发 while 循环的结束。
注意:
需要注意的是,上述 EOF 模拟方法依赖于系统,并且可能无法在不同系统上一致地工作。所有平台。
以上是如何在标准输入 (stdin) 上模拟 EOF?的详细内容。更多信息请关注PHP中文网其他相关文章!