1

我在 main 中有一大块代码,如果“代码”中的某个变量为真,我想返回到 main 的顶部并再次运行。我该怎么做?

#include <stdio.h>

void main(void)
{

// if varable in code is true return to here



//code
//
//
//


}
4

6 回答 6

3
int main(void)
{
  int gotostart=0; 
  // if varable 'gotostart' in code is true return to here
  beginning:

  // code [...]

  if(gotostart)
    goto beginning;

  return 0;
}

as Armen has rightly pointed out, goto deserves some warning. the most popular ist Dijsktra's GOTO statements considered harmful, as it is somewhat counterproductive to structured programming.

a more structured approach would be:

int main(void)
{
  int gotostart=0; 

  do { // if varable 'gotostart' in code is true return to here

    // code [...]

  } while(gotostart)

  return 0;
}
于 2013-10-03T13:18:02.047 回答
2

从中删除代码main()并将其放入函数中:

static void my_function(void)
{
  /* lots of stuff here */
}

然后调用它:

int main(void)
{
  my_function();
  if(condition)
    my_function();
  return 0;
}

在我看来,这比使用循环要干净得多,因为用例并不是真正的“循环式”。如果您想做一两次,请将其分解为一个函数,然后调用该函数一次或两次。作为奖励,它还为您提供了一个很好的机会来为您的程序正在做的事情引入一个名称(函数名称),这有助于使代码更容易理解。

于 2013-10-03T13:17:35.187 回答
2
int main (void)
{
  bool keep_looping = true;

  while (keep_looping)
  {
    // code

    if(done_with_stuff)
    {
      keep_looping = false;
    }
  }
}
于 2013-10-03T13:17:47.700 回答
0

如果您的程序重复相同的模式,那么while()循环是最好的方法。
但是如果你的程序有点麻烦,也许你更喜欢一个goto语句,以便跳转到你想要的标签

  int main(void) {
            // Initial stuff

      jump_point:

           // Do more stuff

      if (some-condition)
           goto jump_point;

           // ... ...

      return 0;
  }

我认为你应该以一种自然而清晰的循环执行方式来设计你的程序:

  int main(void) {

       while(terminate-condition-is-false) {

           // Do all your stuff inside this loop

      }

      return 0;
  }
于 2013-10-03T14:23:10.647 回答
0

实现您所说的最简单的方法可能是使用前面提到的 while 循环,但是这样做:

while(true){
    if(something){
     continue;
     } // then use break when you want to leave the loop all together
}
于 2013-10-03T14:02:12.370 回答
-2

您可以使用以下goto语句:

//Assume here is your starting point of your program
start: //we have declared goto statement for beginning


//Assume here is your ending point
goto start; //Here is that show go back to first position
于 2016-09-12T12:01:27.593 回答