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

标签 c recursion operator-precedence

<分区>

在这段代码中,我尝试编写一个函数,如果两个字符串不匹配,它返回 0 值,如果我能在 str 中找到完全重试 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;
}

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

PS 我使用了递归并将 b 参数设置为可变的。

最佳答案

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

任何启用了警告的体面的编译器都会提醒您注意该错误!

关于在这里找不到错误... C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327121/

相关文章:

c - 好的做法 - 在功能终止时有很多事情要做 - 转到替代方案

c - 递归 C 函数

f# - 是否可以在 F# 中使用正常顺序评估

c - UTF-16 文件无法正确打印

c - 初始化文本文件并存储在数组中

具有 sizeof (int) == 1 "fully conform"的实现可以吗?

javascript - Eloquent Javascript - ch4 - arraytoList - 递归

php - 递归函数中的内存泄漏与引用

c - 为什么这些构造使用增量前和增量后未定义的行为?

c - 静态变量的声明和放置