自己编写strstr函数
时间: 2023-08-26 12:06:58 浏览: 83
以下是自己编写的strstr函数的代码:
```c
#include <stdio.h>
#include <string.h>
char *my_strstr(const char *haystack, const char *needle) {
if (haystack == NULL || needle == NULL) {
return NULL;
}
int haystack_len = strlen(haystack);
int needle_len = strlen(needle);
if (needle_len > haystack_len) {
return NULL;
}
for (int i = 0; i <= haystack_len - needle_len; i++) {
int j;
for (j = 0; j < needle_len; j++) {
if (haystack[i + j] != needle[j]) {
break;
}
}
if (j == needle_len) {
return (char*)haystack + i;
}
}
return NULL;
}
int main() {
char haystack[] = "The quick brown fox jumps over the lazy dog";
char needle[] = "brown";
char *result = my_strstr(haystack, needle);
if (result != NULL) {
printf("Found \"%s\" in \"%s\" starting at index %ld\n", needle, haystack, result - haystack);
} else {
printf("Did not find \"%s\" in \"%s\"\n", needle, haystack);
}
return 0;
}
```
该函数的实现与标准库函数strstr的实现类似,首先判断输入指针是否为空,然后计算字符串长度并进行比较。接着使用两个for循环进行比较,如果找到匹配的子串,就返回该子串在原始字符串中的指针。最后,如果没有找到匹配的子串,则返回空指针。
阅读全文