在这里找不到bug ... C代码

brn*_*ady 1 c recursion operator-precedence

在这段代码中,我尝试编写一个函数,如果两个字符串不匹配则返回0值,如果我可以在str中找到一个wholey转发patt的子字符串,则匹配字符的长度.

#include....

int check(char *str, char *patt, int *b)
{   
    if (*str == *patt && *patt != 0)
        return *b * (1 + check(str+1,patt+1,&b));
    else if (*patt == 0)
        return 0;
    else{
        *b = 0;
        return 0;
    }
}

main()
{
    char s1[SIZE] = "mama";
    char s2[SIZE] = "mama";
    int b = 1;

    printf("%d\n",check(s1,s2,&b));
    b = 1;          

    system ("pause");
    return;
}
Run Code Online (Sandbox Code Playgroud)

在这里我应该得到输出4,但我得到-77779463.感谢帮助!

PS我使用递归并将b参数设置为changable.

Ker*_* SB 7

b已经是指向a的指针int,所以你想用b和不用进行递归调用&b.

任何体面的编译器,启用警告,都会提醒你这个错误!