【发布时间】:2018-06-15 16:35:34
【问题描述】:
这是我试图在我的 Mac 上运行的代码。在此fflush 之后的语句不起作用。在fflush 之后,编译器应该停止并等待用户输入,但事实并非如此。
谁能告诉我为什么会这样或者有其他方法吗?
int main()
{
int pos,neg,zero,num;
char ans = 'y';
pos=neg=zero=0;
while(ans == 'y' || ans=='Y')
{
printf("\nEnter a number : ");
scanf("%d",&num);
if(num==0)
zero++;
if(num>0)
pos++;
if(num<0)
neg++;
fflush(stdin);
printf("\nDo you want to continue?\n\n");
scanf("%c",&ans);
}
printf("You entered %d positive numbers\n",pos);
printf("You entered %d negative numbers\n",neg);
printf("You entered %d zeros \n",zero);
return 0;
}
【问题讨论】:
-
fflush(stdin)是未定义的行为。在这里读了很多遍,所以它一定是真的:) -
@Jean-FrançoisFabre
fflush(stdin)是根据 C 标准的未定义行为。但是,POSIX 和 Windows 都定义了该行为。不幸的是,在这两个规范中,定义的行为是绝对没用的。