gpt4 book ai didi

c - 为什么 C 标准没有定义 fflush(stdin) 的行为?

转载 作者:太空狗 更新时间:2023-10-29 15:53:58 25 4
gpt4 key购买 nike

我知道 fflush(stdin) 会导致未定义的行为,因为 fflush 仅为输出缓冲区定义。

但是为什么?没有为输入缓冲区定义fflush 是否有任何历史原因?

C++ 提供了一种清除标准输入缓冲区的方法,cin.clear(),我不明白为什么它在 C 标准中没有定义。

最佳答案

为什么应该定义fflush(stdin)?从程序的角度来看,缓冲是透明的,因此 fflush(stdin) 可以不丢弃任何东西,也可以消耗并丢弃整个输入数据流。与程序控制发出的输出流不同,程序不知道输入缓冲区中有什么。

fflush(stdin) 的结果充其量也不清楚 - 没有明确的方式说明它将做什么。只需在不指定其行为的平台上以行缓冲模式在不是终端的输入流上尝试它。然后改变缓冲区的大小再试一次。您可能会在随后读取的数据中得到完全不同的结果。

关于c - 为什么 C 标准没有定义 fflush(stdin) 的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52630504/

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