c中get()之前的fflush(stdin)

c中get()之前的fflush(stdin),c,gets,fflush,C,Gets,Fflush,好的,我正在解决code chef中的一个问题(非常简单)。 它简要指出: -将给出一个作为字符串的问题,并且必须生成另一个在问题字符串中没有使用任何字母的字符串。假定大小写相同 -如果所有字母都已使用,只需打印~符号即可 我的整个逻辑都是正确的,只是我在输入中发现了错误,这是在get()之前使用fflush(stdin)造成的。请解释为什么这是一个错误?忽略代码的其余部分 问题链接: 链接到错误的解决方案: 链接到更正的解决方案: 请注意:在已更正的代码中,我仅对不使用fflush(stdin

好的,我正在解决code chef中的一个问题(非常简单)。 它简要指出:

-将给出一个作为字符串的问题,并且必须生成另一个在问题字符串中没有使用任何字母的字符串。假定大小写相同

-如果所有字母都已使用,只需打印~符号即可

我的整个逻辑都是正确的,只是我在输入中发现了错误,这是在get()之前使用fflush(stdin)造成的。请解释为什么这是一个错误?忽略代码的其余部分

问题链接:

链接到错误的解决方案:

链接到更正的解决方案:


请注意:在已更正的代码中,我仅对不使用fflush(stdin)和使用getchar()进行了更改,因为
fflush(stdin)
的行为是特定于实现的;由于(这个问题的)实现是未知的,所以行为也是未知的


您可以放心地预期
fflush(stdin)
的行为是不可预测的。

fflush
用于输出流,而不是输入流。fflush(stdin)未定义behavior@RSahu&scy7he,这取决于实施情况。例如,在Linux上:“对于输入流,fflush()丢弃已从基础文件中提取但尚未被应用程序使用的任何缓冲数据。流的打开状态不受影响。”[]中断,请编辑您的问题并详细说明遇到错误的开发和执行环境。具体来说,什么是目标操作系统(可能还有你的编译器)?@BreakingBenjamin“未定义的行为”意味着它可以工作,也可能无法工作,或者可能只在周五工作。阅读RSahu发布的第一个链接