Breaking out of nested infinite while loops.

Player's Avatar, Join Date: Aug 2007
Go4Expert Member
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
Gene Poole's Avatar, Join Date: Nov 2009
Contributor
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");
Player's Avatar, Join Date: Aug 2007
Go4Expert Member
Hi. I know about break. How do you break from a multiple loop. Look at my example again.
Gene Poole's Avatar, Join Date: Nov 2009
Contributor
You'll have to use multiple breaks.
Player's Avatar, Join Date: Aug 2007
Go4Expert Member
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
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
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.