gpt4 book ai didi

c - 为什么用 EOF 清空 stdin

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:48 24 4
gpt4 key购买 nike

有很多关于flush stdin的问题,我的不是关于如何flush它,而是关于以下函数的含义:

while((c = getchar()) != '\n' && c != EOF);

我正在尝试考虑为什么以及如何在此函数中需要 EOF 来清空标准输入?用户键入内容并按下 enter,我们清空缓冲区直到找到 enter,EOF 是从哪里来的?

谢谢

编辑:非常感谢您的第一个回答和第二个评论,这回答了我的问题并使我完全满意。

除了我们从具有真实 EOF 的文件中通过管道传输输入的情况(这几乎回答了我的问题)之外,我仍然不明白为什么我们在任何其他情况下都需要 EOF 来实现这样的功能。用户只能在终端中一行的开头调用 EOF,因此不能用于清空缓冲区。

最佳答案

如果用户插入 Ctrl-D(在 Linux/OS X 上)或 Ctrl-Z(在 Windows 上),您会从标准输入中获得 EOF。此外,标准输入可能会从文件重定向 - 在这种情况下,最后你会得到一个“真正的”EOF。

在这两种情况下,如果没有检查,循环将永远持续下去,等待永远不会出现的换行符(在这里插入忧郁的音乐)。

关于c - 为什么用 EOF 清空 stdin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220773/

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