首页 >后端开发 >C++ >如何在标准输入 (stdin) 上模拟 EOF?

如何在标准输入 (stdin) 上模拟 EOF?

DDD
DDD原创
2024-10-27 23:29:29788浏览

How Do You Simulate EOF on Standard Input (stdin)?

确定标准输入流(stdin)的EOF

在编程中,常见的输入源是标准输入流(stdin),它从用户键盘读取输入。然而,确定用户何时完成输入数据并到达文件末尾 (EOF) 有时可能具有挑战性。

stdin 有 EOF 吗?

默认, stdin 本质上没有 EOF。这意味着从 stdin 读取的程序将无限期地继续,等待用户的更多输入。

将 EOF 添加到 stdin

如果需要手动模拟 EOF在 stdin 上,两种常见的方法是:

  • Ctrl D (UNIX): 在基于 UNIX 的系统中,按 Ctrl D 表示文件结束。
  • Ctrl Z (Windows): 在 Windows 操作系统中,按 Ctrl Z 通常表示输入结束。

示例:

以下代码片段使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn