Skip to main content
Ala
Senior
Mar 4, 2021 5:35 PM UTC
Solved

how to jump out of while()?

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?

    This topic has been closed for replies.
    Tesla DeLorean
    Tesla DeLoreanBest answer
    Guru
    Mar 4, 2021 6:34 PM UTC
    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 (See Profile) Up vote any posts that you find helpful, it shows what's working..

    2 replies

    MM..1
    Super User
    Mar 4, 2021 5:48 PM UTC

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

    Tesla DeLorean
    Tesla DeLoreanBest answer
    Guru
    Mar 4, 2021 6:34 PM UTC
    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 (See Profile) Up vote any posts that you find helpful, it shows what's working..