[英]C Programming: Scanf in while loop only reads input once and then terminates
[英]C: Scanf in while loop executes only once
我正在尝试使用C语言进行一些简单的操作,以便获得交换并进行一些转换。 为了确保scanf获得正确的类型,我将其放入while循环中,该循环继续要求输入,直到插入数字为止。 如果我输入的是字符而不是数字,则不会再次要求输入。
exRate = 0;
scanfRes = 0;
while(exRate <= 0){
printf("Enter the exchange rate:");
while(scanfRes != 1){
scanfRes = scanf(" %f", &exRate);
}
if(scanfRes == 1 && exRate > 0){
break;
}
printf("Exchange rate must be positive.\n");
}
更新:因为这是课程分配,所以我不应该在教学材料之外使用任何东西。 当我问教职员有关处理意外输入的问题时,我得到的答案是我不应该考虑这种情况。
注释中的答案和帮助都很有用,我在所有有用的建议中加了1。 工作人员的回答使此问题不再需要。
更改scanf()
结果的处理。
如果输入与预期不符,则需要读取有问题的输入数据或处理EOF
。
for (;;) {
printf("Enter the exchange rate:");
scanfRes = scanf("%f", &exRate);
if (scanfRes == 0) {
printf("Exchange rate must be numeric.\n");
// somehow deal with non-numeric input, here just 1 char read & tossed
// or maybe read until end-of-line
fgetc(stdin);
} else if (scanfRes == EOF) {
// Handle EOF somehow
return;
} exRate > 0){
break;
}
printf("Exchange rate must be positive.\n");
}
注: " "
在" %f"
是没有必要的。 "%f"
将消耗前导空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.