用c语言实现strstr函数
时间: 2024-08-27 09:04:05 浏览: 73
C 语言标准库中并没有提供直接实现 `strstr` 的源码,因为这已经被内建到 `<string.h>` 中了。但是,如果你想了解其基本原理并亲手实现一个类似的功能,你可以使用循环遍历的方式来搜索子字符串。下面是一个简单的实现示例:
```c
#include <stdbool.h> // 为了支持 bool 类型
bool custom_strstr(char *haystack, char *needle) {
int i, j;
for (i = 0; haystack[i] != '\0'; i++) { // 遍历主字符串
for (j = 0; needle[j] != '\0' && haystack[i+j] != '\0'; j++) { // 搜索子字符串
if (haystack[i+j] != needle[j]) break; // 字符不匹配,跳出内层循环
}
if (needle[j] == '\0') return true; // 找到了整个子字符串,返回 true
}
return false; // 没有找到子字符串,返回 false
}
int main() {
char str1[] = "Hello, World!";
char str2[] = "World";
if (custom_strstr(str1, str2)) {
printf("'%s' is a substring of '%s'\n", str2, str1);
} else {
printf("'%s' is not a substring of '%s'\n", str2, str1);
}
return 0;
}
```
这个 `custom_strstr` 函数通过嵌套循环逐个比较字符,直到找到子字符串或者遍历完主字符串。
阅读全文