用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里

int substr_index( const char substr[], const char str[])
{
int flag = -1;
int sizeOfSubstr = sizeof(substr)/sizeof(char);
int sizeOfStr = sizeof(str)/sizeof(char);
for (int i = 0; i < sizeOfStr; i++)
{
if (str[i] == substr[0])
{
flag = i;
for (int j = 1; j < sizeOfSubstr; j++)
{
if (str[i + j] != substr[j])
{
flag = -1;
break;
}
}
}
if (flag == i)
break;
}
return flag;
}

         int sizeOfSubstr = strlen(substr);
         int sizeOfStr = strlen(str);

这样就可以了,亲自调试通过。

sizeof(substr)不会反悔数组占用的空间。在函数传递时,char substr[]与char *substr相似。都是传递一个指针。

substr_index中的数组参数,会被当做指针,则有你用sizeof获得的是指针的长度,32位下面就是4,而你需要的是数组元素个数

不应该用sizeof,应该用strlen代替。

strlen对“1234”这样的有效,对{'1','2','3','4'}无效

贴一个完善的程序供lz参考 http://www.cnblogs.com/kaituorensheng/p/3633700.html

int substr_index( const char substr[], const char str[])

数组作为函数函数传递的时候,都会退化为指针。
所以你的sizeof()操作都是4(32位平台)

其实可以用strstr这个现成的。

http://baike.baidu.com/link?url=B7WdLGeU8LYUhlvWUuOcfcu-QYLMsmHRnbYGsQ2p2InJ6ojr_7wQ9aj_2qPNQvd-9wgGUNgtqBQ1Xo8BslpTMq