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这个现成的。