gpt4 book ai didi

c - 这是刷新 C 输入流的正确方法吗?

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

好吧,我一直在谷歌和此处搜索有关如何正确刷新输入流的大量搜索。我所听到的只是关于输入流的 fflush() 是如何未定义的混合争论,有些人说就那样做,而其他人只是说不要这样做,我没有太多运气找到一个明确的有效/这样做的正确方法,大多数人都同意..我在编程方面很新,所以我还不知道该语言的所有语法/技巧,所以我的问题是哪种方法是最有效/正确的解决方案清除 C 输入流??

  1. 在尝试接收更多输入之前使用 getchar() 两次?

  2. 只需对输入使用fflush() 函数?或

  3. 这就是我认为我应该做的。

    void clearInputBuf(void);  
    void clearInputBuf(void)
    {
    int garbageCollector;
    while ((garbageCollector = getchar()) != '\n' && garbageCollector != EOF)
    {}
    }

因此,每当我需要读取新的 scanf() 或使用 getchar() 来暂停程序时,我只需调用 clearInputBuf..那么,三种解决方案中最好的方法是什么,或者有更好的方法吗选项?

最佳答案

All I hear is mixed arguments about how fflush() is undefined for the input stream

没错。不要使用 fflush() 刷新输入流。

(A) 适用于您在输入流中留下单个字符的简单情况(例如 scanf() 留下换行符)。

(B) 不要使用。它在某些平台上定义。但不要依赖标准调用未定义的行为

(C) 显然是 3 个选项中最好的,因为它可以“刷新”输入流中任意数量的字符。

但如果您阅读(例如使用fgets()),您可能就不太需要清除输入流。

关于c - 这是刷新 C 输入流的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958298/

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