用于强制执行外循环的下一次迭代的Contine语句

时间:2013-11-27 12:09:06

标签: c

我如何给出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
           }
        }    
     }

2 个答案:

答案 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))