[英]C Program While Loop problem
我有一个程序要写,它给了我麻烦。
它要求用户输入,例如建议他们想知道面积和/或表面的形状。 这个元素,我已经掌握了。
问题是,当我尝试添加while循环来表示响应无效时,它会混淆整个程序。
我需要它说,“响应无效,请选择选项1,2,3或4等。
我正在编写循环如下:
printf("Please enter 1 for area or 2 for surface area: ");
scanf("%i",&menu1);
while(menu1!=1&&menu1!=2) {
printf("Invalid option. Please enter 1 for area or 2 for surface area: ");
scanf("%i",&menu1);
}
现在问题出现在用户做出有效回复时,出现“无效响应”。 如何解决这个问题?
以下适用于我:
#include <stdio.h>
int main(void) {
int menu1; // Make sure this is declared
printf("Please enter 1 for area or 2 for surface area: ");
scanf("%i", &menu1);
while((menu1 != 1) && (menu1 != 2)) {
printf("Invalid option. Please enter 1 for area or 2 for surface area: ");
scanf("%i", &menu1);
}
return 0;
}
您没有发布完整的代码,但我假设您在scanf
使用它之前没有声明menu1
。 那肯定会引起问题。
正如@John在评论中指出的那样,您可以通过使用do-while
来确保循环始终至少运行一次来消除一些冗余。
作为@Cqnqrd指出,scanf函数可能会导致一些无限循环的问题,如果你输入非整数值,其中的原因是详细的在这里 。 您可以使用fgets和atoi来处理非整数输入,而不是像scanf那样(防止在'aa'之类的输入上出现无限循环)。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int menu1 = 0;
char input[256];
do {
printf("Please enter 1 for area or 2 for surface area: ");
fgets(input, 256, stdin);
menu1 = atoi(input);
if ((menu1 != 1) && (menu1 != 2)) printf("Invalid entry. ");
} while ((menu1 != 1) && (menu1 != 2));
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.