在这里找不到错误...C 代码



在此代码中,我尝试编写一个函数,如果两个字符串不匹配,则返回0值,如果我可以在str中找到一个sudstring,则匹配字符的长度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("%dn",check(s1,s2,&b));
    b = 1;          
    system ("pause");
    return;
}

在这里我应该获得输出4,但是我得到-77779463。感谢您的帮助!

ps我使用递归并将B参数设置为可变的。

b已经是int的指针,因此您想用b而不是&b进行递归调用。

启用警告的任何像样的编译器都会提醒您该错误!

return *b * (1 + check(str+1,patt+1,&b));
                                    ^ dont pass address.

b转到它。