int BruteForceStringMatch(char Text[], char Pattern[]){
int TextSize = sizeof(Text) / sizeof(Text[0]); //get size of arrays
int PatternSize = sizeof(Pattern) / sizeof(Pattern[0]);
int i;
for(i = 0; i++; i < TextSize - PatternSize){
int j = 0;
while(j < PatternSize && Pattern[j] == Text[i + j]){
j = j + 1;
}
if(j = PatternSize){
return i;
}
}
return -1;
}
int main() {
char x [] = "if" ;
char y [] = "aslifee";
int c = BruteForceStringMatch(y,x);
printf("%d ",c);
getchar();
}
大家好,我想通过使用BruteForceStringMatch函数来匹配文本和模式,但我从计算机获得输出-1。在这里我应该得到3(因为第四个元素匹配),但为什么我得到-1这意味着没有匹配?
答案 0 :(得分:1)
这是错误的:
int TextSize = sizeof(Text)/sizeof(Text[0]); //get size of arrays
这 not 为您提供数组的大小,因为C将数组传递给函数,就好像它们是指针一样。从中删除了数组的大小,因此sizeof
返回指针的大小。
改为使用strlen
:
int TextSize = strlen(Text);
图案尺寸也一样。
注意:我认为您这样做是为了学习练习,因为C标准库提供function for finding strings within strings.