編寫函數int fun(char *s1,char *s2),在字符串s1中統計字符串s2出現的次數並返回。若s2在s1中未出現,則返回0。例如:
若輸入的字符串s1為:abaaAabcaabbabca,字符串s2為:ab ,則程序輸出:n=4
若輸入的字符串s1為:abaaAabcaabbabca,字符串s2為:abd,則程序輸出:No find
答案: int fun(char *s1, char *s2)
{
int i, j, len1 = strlen (s1), len2 = strlen (s2), n=0;
for (i=0; i<=len1-len2; i++)
{
for (j=0; j<len2; j++)
{
if (*(s1+i+j) != *(s2+j))
break;
}
if (j == len2)
{
i += j-1;
n++;
}
}
return n;
}
求每行的注釋!!!!!!!!!!1
如果需要實現此功能,你需要知道什麼?
參數是否合理?當str2大於str1時就明顯不合理,這在最外層循環中體現
每次在str1中匹配時,默認是在位置0開始的,這個位置由i體現
如何判斷是否找到?由if(j==len2)體現
如何增加找到的次數?n++體現
當找到後(沒找到則移動一個位置),位置應該被移動str2的長度的距離,例如在12312中找12,第一次找到了,那麼第二次應該在2312中找12嗎?顯然不需要,應該在312中找。由i += j-1體現,不過在這裡我覺得使用 i += len2-1更合適。