现在有find函数功能如下:接收两个参数 char* str 和 char* sub ,在str中查找sub子串,找到后返回子串的位置,否则返回-1.请在不使用库函数的前提下,使用C语言来实现find函数的功能,以便稍后对其进行测试
时间: 2024-11-03 11:16:20 浏览: 28
Python中常用操作字符串的函数与方法总结
5星 · 资源好评率100%
在C语言中,你可以通过遍历字符串来实现这个find函数。以下是一个简单的手动搜索算法:
```c
#include <stdio.h>
#include <string.h>
int find(char *str, char *sub) {
int i = 0, j = 0;
while (str[i] != '\0') { // 遍历str直到遇到字符串结束符
if (str[i] == sub[j]) { // 如果str当前字符等于sub中相应位置的字符
i++; j++; // 向前移动指针
if (j == strlen(sub)) { // 当所有sub字符匹配完,说明找到了子串
return i - j; // 返回子串起始位置(注意减去子串长度,因为j是包含在内部分配的)
}
} else {
i = i - j + 1; // 如果不匹配,从上一次匹配的下一个位置继续寻找
j = 0; // 重置sub的指针
}
}
return -1; // 如果str中没有找到sub,返回-1
}
// 测试示例
int main() {
char str[] = "Hello, world!";
char sub[] = "world";
printf("Sub-string found at position %d\n", find(str, sub));
return 0;
}
```
这个`find`函数会在`str`中逐个字符地查找`sub`,如果找到则返回子串的起始位置,否则返回-1。
阅读全文