数组中的输出错误 int BruteForceStringMatch(字符文本[],字符模式[]){ int TextSize=sizeof(Text)/sizeof(Text[0]);//获取数组的大小 int PatternSize=sizeof(Pattern)/sizeof(Pattern[0]); int i; 对于(i=0;i++;i

数组中的输出错误 int BruteForceStringMatch(字符文本[],字符模式[]){ int TextSize=sizeof(Text)/sizeof(Text[0]);//获取数组的大小 int PatternSize=sizeof(Pattern)/sizeof(Pattern[0]); int i; 对于(i=0;i++;i,c,arrays,char,string-matching,brute-force,C,Arrays,Char,String Matching,Brute Force,大家好,我想通过使用BruteForceStringMatch函数来匹配文本和模式,但我从计算机得到了输出-1。这里我应该得到3(因为第四个元素是匹配的),但为什么我得到-1,这意味着没有匹配?这里是错误的: int BruteForceStringMatch(char Text[], char Pattern[]){ int TextSize = sizeof(Text) / sizeof(Text[0]); //get size of arrays int PatternS

大家好,我想通过使用BruteForceStringMatch函数来匹配文本和模式,但我从计算机得到了输出-1。这里我应该得到3(因为第四个元素是匹配的),但为什么我得到-1,这意味着没有匹配?

这里是错误的:

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();       
}
这并没有给出数组的大小,因为C将数组作为指针传递给函数。数组的大小将从中剥离,因此
sizeof
返回指针的大小

改为使用strlen:

int TextSize = sizeof(Text)/sizeof(Text[0]); //get size of arrays
图案大小也是如此


注意:我假设您这样做是为了学习,因为C标准库为(i=0;i++;i这
对于
循环应该做什么?格式化为了读者请注意,这个函数是关于蛮力字符串匹配的,蛮力字符串匹配算法,像这样。这个算法看起来一个接一个地匹配文本和模式。没有用户3121…..这个算法是真的。我控制。这是我的项目分配,We必须这样做。但是我试过了,它没有改变,输出仍然是-1。谢谢大家,我修正了。我犯了一个基本错误,我不在乎。For循环应该是:For(I=0;I
int TextSize = strlen(Text);