【发布时间】:2012-12-27 06:42:22
【问题描述】:
可能重复:
Using fflush(stdin)
我的代码是:
scanf("%d", &_choice);
fflush(stdin);
gets(input);
我使用fflush(stdin); 来删除scanf 之后留下的'\n' 字符。
但是,我发现它不起作用,gets 自动获取 '\n' 字符并继续。
我通过使用getchar() 而不是fflush 解决了这个问题,但我仍然不明白为什么fflush 不起作用...
编辑:我现在明白fflush 仅用于输出流。
但是有没有从垃圾中“清理”stdin 的命令?
【问题讨论】:
-
这是未定义的行为。期间。
-
另外,您正在使用gets()。别。请改用 fgets()。
-
@milleniumbug 我不想处理删除最后一个
\n字符 -
@cookya 你更喜欢缓冲区溢出?此外,
gets()终于从语言中删除了。
标签: c