返回if语句的开头

时间:2014-10-14 19:22:22

标签: c if-statement return goto

我想知道当用户输入我们不希望他输入的内容时,是否有任何方法可以返回 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 上看到了一些东西,但我不确定是不是这样...... 非常感谢你! :

5 个答案:

答案 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;
}