模拟实现strstr
时间: 2023-11-04 09:52:15 浏览: 107
string类的模拟实现
strstr函数是C语言中的字符串查找函数,用于在一个字符串中查找指定的子串,并返回子串在原字符串中的起始位置。
以下是一个简单的模拟实现strstr函数的代码:
```c
#include <stdio.h>
#include <string.h>
char* my_strstr(const char* haystack, const char* needle) {
if (*needle == '\0') {
return (char*) haystack; // needle为空串,直接返回haystack
}
for (; *haystack != '\0'; haystack++) {
const char* h = haystack;
const char* n = needle;
while (*n != '\0' && *h == *n) {
h++;
n++;
}
if (*n == '\0') {
return (char*) haystack; // 子串匹配成功
}
}
return NULL; // 未找到子串
}
int main() {
char haystack[] = "Hello, World!";
char needle[] = "World";
char* result = my_strstr(haystack, needle);
if (result == NULL) {
printf("Substring not found.\n");
} else {
printf("Substring found at index: %ld\n", result - haystack);
}
return 0;
}
```
这段代码实现了一个自定义的my_strstr函数,功能与C标准库中的strstr函数相同。它通过逐个比较字符,找到子串在原字符串中的起始位置,或者返回NULL表示未找到。
注意:此处只是简单模拟实现,实际的strstr函数可能会更加复杂和优化。
阅读全文