Breaking out of nested infinite while loops.

Go4Expert Member
15Nov2009,21:20   #1
Player's Avatar
Can anyone tell me how to do as the title says? I'm told that using goto is a no no. Here is some sample code that i can't seem to be able to figure out. I'm a novice by the way
Code:
#include<stdio.h>

int main(void)
{
	while(1)
	{
		printf("Hello.\n");
		while(1)
		{
			while(1)
			{
				printf("How do i break out of this loop and back into the Hello loop?\n");
			}
		}
	}
return(0);
}

Last edited by shabbir; 16Nov2009 at 09:20.. Reason: Code blocks
Contributor
15Nov2009,21:44   #2
Gene Poole's Avatar
The "break" keyword will break you out of the loop:

Code:
  while(1){
    printf("Stuck in the loop\n");
    if(somecondition){
      break;
    }
  }
  printf("Broke out of the loop\n");
Go4Expert Member
15Nov2009,23:51   #3
Player's Avatar
Hi. I know about break. How do you break from a multiple loop. Look at my example again.
Contributor
16Nov2009,03:02   #4
Gene Poole's Avatar
You'll have to use multiple breaks.
Go4Expert Member
16Nov2009,19:48   #5
Player's Avatar
My way
Code:
#include<stdio.h>
#define TRUE 1
#define FALSE 0

int main(void)
{
	short int exitloop;
	while(1)
	{
		exitloop=FALSE;
		printf("Hello.\n");
		while(1)
		{
			while(1)
			{
				printf("This is how i break this loop, back into the Hello loop\n");
				exitloop=TRUE;
				break;
			}
			if(exitloop==TRUE)
				break;
		}
	}
return(0);
}

Last edited by shabbir; 17Nov2009 at 08:48.. Reason: Code blocks
Mentor
17Nov2009,21:03   #6
xpi0t0s's Avatar
The correct answer depends very much on what you are trying to do. Nesting three infinite loops isn't a practical design for anything I've come across. Let us know what problem you're trying to solve and we'll see if we can come up with a better solution.

On the other hand if this is just for academic interest, yeah, just use a goto, whatever works. Makes no difference.