This question already has answers here:
Using fflush(stdin)
(7 个回答)
4年前关闭。
当我多次使用 scanf 时,程序不会等待另一次输入。相反它退出
我了解到我可以在 scanf 函数中的转换说明符之前放置一个空格 - 是的,解决了这个问题,我想这与输入流有关,也就是说 - 如果它是输入流中的换行符,则 scanf 将消耗它立即。
但如果是这样 - 为什么我不能使用 fflush(stdin) 呢?我试过了,但它不起作用。
(7 个回答)
4年前关闭。
当我多次使用 scanf 时,程序不会等待另一次输入。相反它退出
我了解到我可以在 scanf 函数中的转换说明符之前放置一个空格 - 是的,解决了这个问题,我想这与输入流有关,也就是说 - 如果它是输入流中的换行符,则 scanf 将消耗它立即。
scanf(" %f", &value);
但如果是这样 - 为什么我不能使用 fflush(stdin) 呢?我试过了,但它不起作用。
#include <stdio.h>
int main(void)
{
float value;
char ch;
printf("input value: ");
scanf("%f", &value);
fflush(stdin);
printf("input char: ");
scanf("%c", &ch);
return 0;
}
最佳答案
fflush()
用于清除输出缓冲区。由于您正在尝试清除输入缓冲区,这可能会导致未定义的行为。
这是一个 SO 问题,解释了为什么这不是好的做法:
Using fflush(stdin)
关于c 语言 scanf - fflush(stdin) - 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29730653/
10-14 20:31