I am trying to find a substring in a string. While doing this, I understood that to check for multiple conditions in a for
loop if we write
for(i=0; condition1, condition2; i++)
the value of condition1
is found and then discarded. Then, the value of condition2
is found and returned. To get around this, we need to use &&
in case of multiple conditions to be checked by a for
loop in here.
for(i=0; condition1 && condition2; i++)
So far I believe I understood right, but the following for
loop is not working.
for(i=0; (a[i] != '\0') && (a[i] == b[0]); i++)
{
j = i + 1;
k = 1;
while(a[j] == b[k] && a[j] != '\0' && b[k] != '\0')
{
j++;
k++;
}
if(b[k] == '\0')
{
return i;
}
}
return -1;
When I wrote the above for
loop, the control is entering the loop and performing the operations, whereas in the following code, control is not even entering the for
loop, and it is working correctly.
for(i=0; a[i] != '\0'; i++)
{
if(a[i] == b[0])
{
j = i + 1;
k = 1;
while(a[j] == b[k] && a[j] != '\0' && b[k] != '\0')
{
j++;
k++;
}
if(b[k] == '\0')
{
return i;
}
}
}
Is there something I am missing about internal processing in for
loops? I believe the way they both should work is the same.