c-strstr实现中出现无法访问内存错误



我有以下代码来在C中实现我自己版本的字符串搜索。字符串搜索函数返回一个指针,指向在haystack中第一次出现的针中指定的整个字符序列中的任何一个,如果该序列不在haystak中,则返回一个空指针。这是我的代码:

char *
mystrstr(const char *haystack, const char *needle)
{
size_t length = 0;
size_t i = 0;
size_t j = 0;
const char *p1;
const char *p2;
p1 = haystack;
p2 = needle;
assert(haystack != NULL && needle != NULL);
while (needle[length] != '') {
length++;
}
while (*p1 != '') {
p2 = needle;
j = 0;
while (j < length && *p1 == *p2) {
p1++;
p2++;
j++;
}
if (j == length) {
return i;
}
p1 = p1 - j + 1;
i++;
}
return NULL;
}

然而,当我测试这个代码时,我收到一条错误消息,说它无法访问内存。有什么想法吗?还有关于如何改进代码以使其模仿上述功能的建议吗?

更改

return i;

return (haystack + i );

最新更新