数组输出错误

时间:2014-05-01 10:56:54

标签: c arrays char string-matching brute-force

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这意味着没有匹配?

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.