通過極致的答案是你的代碼完全正確的。 &那應該被接受的答案。我只想解決一個案例,當內部循環後面有更多代碼時。
原始代碼:
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
)&使用該變量作爲i<len_name1
,而不是循環中的函數調用。
NOTE2:如果你想在2 break語句來區分在內的多個break語句for循環&,你可以設置一個標誌基於其價值荷蘭國際集團&只是break
之前,而不是使用if(j<strlen(name2))
。
是的,你是對的。 –
他們你應該接受答案 – Benedictus