模拟strstr函数查找子串
时间: 2023-08-29 10:13:59 浏览: 85
可以使用循环逐一比较子串和字符串中的每个字符,如果匹配成功,则返回当前位置,否则继续往后查找,直到字符串末尾。
以下是一个示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int strStr(char *haystack, char *needle) {
if (*needle == '\0') return 0;
int len1 = strlen(haystack);
int len2 = strlen(needle);
for (int i = 0; i < len1 - len2 + 1; i++) {
int j = 0;
for (; j < len2; j++) {
if (haystack[i + j] != needle[j]) {
break;
}
}
if (j == len2) {
return i;
}
}
return -1;
}
int main() {
char s1[] = "hello world";
char s2[] = "world";
int pos = strStr(s1, s2);
cout << pos << endl; // 6
return 0;
}
```
在上面的代码中,我们首先判断 needle 是否为空串,如果是,则直接返回 0,因为空串是任何字符串的子串。接着,我们使用两个变量 len1 和 len2 分别记录字符串 haystack 和 needle 的长度。然后,我们从字符串 haystack 的第一个字符开始,逐一比较 haystack 和 needle 中的字符,如果匹配成功,则返回当前位置 i,否则继续往后查找,直到字符串末尾。如果找不到,则返回 -1。
阅读全文