在这段代码中,我尝试编写一个函数,如果两个字符串不匹配,则返回0值;如果可以在整个重采样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。感谢您的帮助!
我使用了递归,并将b参数设置为可更改。
发布于 2012-11-11 07:35:26
b已经是一个指向int的指针,所以您希望使用b而不是&b进行递归调用。
任何像样的编译器,如果启用了警告,都会提醒您注意这个错误!
https://stackoverflow.com/questions/13327121
复制相似问题