问题描述
- 用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,应该用strlen代替。
解决方案三:
int substr_index( const char substr[], const char str[])
数组作为函数函数传递的时候,都会退化为指针。
所以你的sizeof()操作都是4(32位平台)
解决方案四:
sizeof(substr)不会反悔数组占用的空间。在函数传递时,char substr[]与char *substr相似。都是传递一个指针。
解决方案五:
sizeof(substr)不会反悔数组占用的空间。在函数传递时,char substr[]与char *substr相似。都是传递一个指针。
解决方案六:
substr_index中的数组参数,会被当做指针,则有你用sizeof获得的是指针的长度,32位下面就是4,而你需要的是数组元素个数
解决方案七:
strlen对“1234”这样的有效,对{'1','2','3','4'}无效
解决方案八:
贴一个完善的程序供lz参考
解决方案九:
贴一个完善的程序供lz参考 http://www.cnblogs.com/kaituorensheng/p/3633700.html
解决方案十:
贴一个完善的程序供lz参考 http://www.cnblogs.com/kaituorensheng/p/3633700.html
时间: 2024-11-02 01:32:48