【发布时间】:2013-06-26 11:33:51
【问题描述】:
我在 Linux GCC 中使用了 fflush(),但它不起作用。该功能有其他选择吗?这是我的代码:
#include<stdio.h>
void main()
{
char ch='y';
while(ch=='y')
{
int a;
printf("Enter some value:");
scanf("%d",&a);
fflush(stdin);
printf("Do you want to continue?");
scanf("%c",&ch)
}
我得到的输出是:
Enter some value: 10
然后程序结束。就这样。我可以在 Linux 中做什么?有替代功能吗?
【问题讨论】:
-
请记住,刷新
stdin实际上是未定义的行为。不要这样做。 -
不要
fflush(stdin)。而是将scanf()更改为fgets()。 -
@Stefan 我只是尝试使用 fflush() 刷新输入流。在windows下可以,但是在linux下就不行了……
-
@sundar 是的,但是为什么要刷新输入流?除非您说出您需要程序做什么,否则不可能推荐替代方案。
-
fflush()是对输入流的未定义操作。一些编译器可能会作为扩展提供对这种未定义行为的支持。我不建议依赖这个。