返回循环中的if语句的开头

时间:2017-02-01 19:10:34

标签: c

我试图创建一个用户必须经历迷宫的简单游戏。在迷宫的开头,我给用户提供了可能的路线,并询问用户下一条路线。如果用户输入正确的路线,我会带他到下一条路线。如果用户输入错误的路线,我会打印一条错误信息,然后再次提示,然后再次阅读他的输入。

我在打印错误消息后无法确定要执行的操作。我该如何回到循环的开头?我做了一些研究,并开始认为我应该使用do-while循环,但考虑到之间的迭代(重复这一步直到用户找到迷宫的退出),我很难弄清楚到底是怎么做的那。

这是我原来的if-else声明:

        printf("Prompt for user input\n");     //step1
        //user input                           
        scanf("%s", &input);                   //step2
        //check input
        for (i = 0; i < 7; i++) {
            if (strncmp(input, condition) == 0){//do something}
            else{
                  printf("error\n");
                  //need to do steps 1 and 2 again
        }

感谢您的时间,非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

根据你的问题,我可以理解你提示用户输入值,直到他给出了正确的答案,或者他完成了7次机会。

您可以使用do while循环:

 int chanceCount = 0;  //it will keep track of number of chances user gets

do {
            printf("Prompt for user input\n");    
             //user input                           
            scanf("%s", &input);  

            if (strncmp(input, condition) == 0)
            {
                   //do something
                   break; /* come out of loop, as user gave correct answer*/
            }
           else
           {
                 printf("error try again \n");

             }
            chanceCount ++;
     }while(chanceCount != 7);

答案 1 :(得分:1)

最简单的方法是将其包装在另一个循环中。

bool game_over = false;

do {
    printf("Prompt for user input\n");     //step1
    //user input                           
    scanf("%s", &input);                   //step2
    //check input

    bool input_okay = true;
    for (i = 0; i < 7; i++) {
        if (strncmp(input, condition) == 0) {
          //do something
        }
        else{
              printf("error\n");
              input_okay = game_over = false;
              break;
    }

    if (!input_okay)
      continue;   // restart do while

    //
} while(!game_over);

需要标记(使用bool中的stdbool.h类型定义)以确保在do ... while循环的正确范围内执行continue语句。

答案 2 :(得分:0)

bool OK = false
while( ! OK ) {
    printf("Prompt for user input\n");     //step1
    //user input                           
    scanf("%s", &input);                   //step2
    //check input
    for (i = 0; i < 7; i++) {
            if (strncmp(input, condition) == 0)
            {//do something}
                OK = true
            }
            else
            {
                  printf("error\n");
                  //need to do steps 1 and 2 again
                  OK = false;
            }
    }
}