このコードでは、2 つの文字列が一致しない場合は 0 の値を返し、patt を完全にリサンブルする部分文字列が str で見つかった場合は一致する文字の長さを返す関数を記述しようとしました。
#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パラメータを変更可能に設定しました。