我有相同的问题
为什么我必须按Ctrl D几次才能看到它?
我想退出周期,当我输入数字0或ctrl D时,只有在我重复达到组合的情况下,在我计算的主题中,它就可以解释了原因,但是我不知道如何修复我的原因代码,我决定问
这是我的代码的一部分
do{
scanf("%f", &coin);
payment=payment+coin;
if ((coin !=0) && (coin !=100) && (coin !=50) && (coin !=20) && (coin !=10) && (coin !=5) && (coin !=2) && (coin !=1) && (coin !=0.5) && (coin*100 !=20) && (coin*100 !=10) && (coin*100 !=5) && (coin*100 !=2) && (coin*100 !=1)){
if (coin>=1){
rest=coin;
while(rest>=1)
rest--;
if (rest!=0)
printf("%.2f is invalid!n", coin);
else
printf("%.0f is invalid!n", coin);
}
else
printf("%.2f is invalid!n", coin);
return(EXIT_FAILURE);
}
}while (coin != 0 && (getchar()!=EOF));
,而不是仅检查Ctrl-D
,而是检查scanf
的成功。
scanf
将返回1
以成功阅读coin
,否则break
来自while
。
if (scanf("%f", &coin) != 1)
break;
也改变条件
}while (coin != 0 );
第一个ctrl d退出scanf
第二个退出getchar()
这就是为什么!
希望这有帮助