我必須爲一個在字符串中找到一個子串的任務編寫一些代碼。找到一個子串
這裏是我的代碼,我添加了註釋:
// the target is the substring that we want to find in the source string
// m is the length of the target, and n is the length of the source
int contains(char target[], int m, char source[], int n) {
int flag = 0; // the source originally does not contain the target
int i;
// go through each character of the source string
for(i = 0; i < n; i++) {
int targetIndex = 0;
int j;
// check if the preceding characters of the source string are a substring
// that matches the target string
for(j = i; j < n && targetIndex < m; j++) {
if(target[targetIndex] == source[j]) {
flag = 1;
targetIndex += 1;
}
else {
flag = 0; // a letter does not match
break;
}
}
}
return flag;
}
所以,當我測試這個方法,我總是0
回來,我不明白爲什麼。
如果我嘗試int i = contains("potatoes", 8, "toes", 4);
它給出0
。
我試着把一些打印語句看看它匹配什麼字符,它似乎只發現第一個字母"t"
。
因爲這基本上只是'strstr()',所以我建議你看看一個實現, G。一個在glibc中。 – 2013-10-12 14:52:13
是否要更正此代碼?或想要更好的方式? –