编写一个函数,要求不用字符串函数实现子串的搜索,若找到子串则返回子串在主串的开始位置否则返回-1
时间: 2024-09-29 07:13:15 浏览: 37
字符串子串替换函数
在C语言中,要实现一个不使用内置字符串函数(如`strstr()`或`strchr()`)的子串搜索算法,你可以采用滑动窗口或者暴力查找的方法。这里我为你提供一种基于滑动窗口的方法,它逐个字符比较,直到找到匹配。
```c
#include <stdio.h>
// 函数声明,没有返回值类型是因为返回的位置可能不是整型,可以使用size_t
int searchSubstr(char* mainStr, char* substr);
int main() {
char str[] = "Hello, World!";
char sub[] = "World";
int result = searchSubstr(str, sub);
if (result != -1)
printf("Substring found at position %d\n", result);
else
printf("Substring not found\n");
return 0;
}
// 搜索子串函数
int searchSubstr(char* mainStr, char* substr) {
// 遍历主字符串
for (int i = 0; mainStr[i] != '\0'; i++) {
// 用j记录子串的当前检查位置
int j = 0;
// 内部循环,检查子串是否匹配
while (mainStr[i + j] == substr[j] && j < strlen(substr)) {
j++;
}
// 如果子串完全匹配,则返回起始位置i
if (j == strlen(substr)) {
return i;
}
}
// 子串未找到,返回-1
return -1;
}
```
在这个示例中,`searchSubstr`函数从主字符串`mainStr`的第一个字符开始检查,如果遇到与子串`substr`相同的字符,就继续检查下一个字符,直到找到整个子串或遍历完整个主字符串。如果找到子串,就立即返回起始位置;如果没有找到,函数会在循环结束后返回-1。
阅读全文