我想知道当用户输入我们不希望他输入的内容时,是否有任何方法可以返回 if 语句的开头。例如:
#include <stdio.h>
int main()
{
int number1;
printf("Please enter a number:"); scanf("%d", &number1);
if(blablabla)
printf("blabla");
else if(blablabla)
printf("blabla");
else if(blablabla)
printf("blabla");
else
/*I want to return to the beginning of this if statement so the user can try again*/
}
我在 goto 上看到了一些东西,但我不确定是不是这样...... 非常感谢你! :
答案 0 :(得分:1)
将所有内容放在while循环中,只有在输入良好时才退出循环。
while (true) {
printf("Please enter a number:");
scanf("%d", &number1);
if (blablabla) {
printf("blabla");
break; //good and break
} else if (blablabla) {
printf("blabla");
break; //good and break
} else if(blablabla) {
printf("blabla");
break; //good and break
}
// no good and stays
}
答案 1 :(得分:0)
尝试使用while语句:
int valueIWantItToBe = 1;//Whatever value you want
do {
printf("Please enter a number:"); scanf("%d", &number1);
} while (number1 != valueIWantItToBe);
答案 2 :(得分:0)
您可以稍微重构以使用do-while循环。我现在无法进入gcc,但尝试了以下几点:
#include <stdio.h>
int main()
{
int number1;
bool continueLooping = true;
do
{
printf("Please enter a number:"); scanf("%d", &number1);
if (successful input 1)
{
/* perform some action */
continueLooping = false;
}
else if (successful input 2)
{
continueLooping = false;
}
else
{
/* Failed input */
}
} while (true == continueLooping);
}
编辑:一些细节
基本上,你想要无限执行,直到得到适当的输入。因此,改变焦点始终采取“良好”的输入。在输入上运行测试用例,对于每个成功的案例,您希望选择退出循环。
如果输入错误,请不要更改循环条件,以便重新运行整个过程
答案 3 :(得分:0)
我认为您想在用户输入无效内容时重置main()
功能。如果是这样,试试这个:
function main(){
if(blablabla){
printf("blabla");
return false; /* If the code hits a "return false",
the code stops running and resets the function. */
}
if(blablabla){
printf("blabla");
return false;
}
if(blablabla){
printf("blabla");
return false;
}
return true; // If the code does not "return false" then "return true".
}
如果有帮助,请告诉我。
答案 4 :(得分:0)
#include
int main()
{
int number1;
int loop_state = 0;
do{
printf("Please enter a number:"); scanf("%d", &number1);
switch(number1)
{
case 1: break;
case 2: break;
default: loot_state = 1 ;/*User value is not as expected*/
}
}while(loop_state==1);
return 0;
}