cancel
Showing results for 
Search instead for 
Did you mean: 

how to jump out of while()?

Ala
Senior

hey there

I have the code below

uint32_t startTime = HAL_GetTick();
while (HAL_GetTick() - startTime < 5000)
  {
    for (int i = 0; i < 3; i++)
    {
      if (strstr(InputMSG, answerSearch[i]))
      {
        resault = 1;
	break;
      }
    }
  }

where I want to check if there are any match of answerSearch[i] within InputMSG array and if there is, jump out of while, but what I see is that the process lasts as long as 5000ms, even though the match is found. the thing is that even one match is enough and as soon as one match is found, I want it to jump out of while().

what can I do to make it jump as soon as it finds the first match?

1 ACCEPTED SOLUTION

Accepted Solutions
uint32_t startTime = HAL_GetTick();
while (HAL_GetTick() - startTime < 5000)
{
  int i;
    for(i = 0; i < 3; i++)
   {
      if (strstr(InputMSG, answerSearch[i]))
      {
          resault = 1;
          break;
      }
  }
 
  if (i != 3) break; // loop exited early
}

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

View solution in original post

2 REPLIES 2
MM..1
Chief II

Simply dont use for or add next if resault==1 break after for or in while add && resault==0

uint32_t startTime = HAL_GetTick();
while (HAL_GetTick() - startTime < 5000)
{
  int i;
    for(i = 0; i < 3; i++)
   {
      if (strstr(InputMSG, answerSearch[i]))
      {
          resault = 1;
          break;
      }
  }
 
  if (i != 3) break; // loop exited early
}

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..