我如何给出continue语句来强制执行外循环的下一次迭代?
for(i=0;i<strlen(name1);i++) // Outer Loop
{
for(j=0;j<strlen(name2);j++) //inner Loop
{
if(name1[i]==name2[j])
{
name1[i]='*';
continue; //If i continue here the inner loops's newxt iteration takes place
}
}
}
答案 0 :(得分:1)
for(i=0;i<strlen(name1);i++) // Outer Loop
{
for(j=0;j<strlen(name2);j++) //inner Loop
{
if(name1[i]==name2[j])
{
name1[i]='*';
break; // <-- break out of loop
}
}
}
答案 1 :(得分:0)
acme的答案对您的代码完全正确。&amp;应该接受答案。我只是想解决一个案例,当内循环后有更多的代码。
原始代码:
for(i=0;i<strlen(name1);i++) // Outer Loop
{
for(j=0;j<strlen(name2);j++) //inner Loop
{
if(name1[i]==name2[j])
{
name1[i]='*';
continue; //If i continue here the inner loops's newxt iteration takes place
}
}
// <some more code here....>
}
将其更改为:
for(i=0;i<strlen(name1);i++) // Outer Loop
{
for(j=0;j<strlen(name2);j++) //inner Loop
{
if(name1[i]==name2[j])
{
name1[i]='*';
break; // come out of inner loop.
}
}
if(j<strlen(name2)) // check if there was a conditional break.
continue; // skip remaining code, after inner for loop.
// <some more code here....>
}
注意1:尽可能避免在for循环中检查strlen()
。每次迭代都会对其进行评估。如果字符串不会改变,您可以对其进行一次评估,存储在变量中(例如len_name1
)&amp;将该变量用作i<len_name1
,而不是循环中的函数调用。
注意2:如果内部for循环中有多个break语句。如果要区分2 break语句,可以在break
和&amp;之前设置一个标志。根据其值,而不是使用if(j<strlen(name2))
。