来个不一样的strstr函数示例
时间: 2024-07-11 08:00:30 浏览: 61
php字符串函数学习之strstr()
`strstr` 函数在 C 语言中用于在一个字符串中查找指定子串第一次出现的位置。然而,这个标准库函数没有提供像在某些高级语言(如 Python)中那种灵活的查找机制,比如忽略大小写、从某个特定位置开始搜索等。如果你想创建一个“不一样的`strstr`”函数,你可以考虑实现一个扩展版,例如:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 创建一个 case-insensitive strstr 类似功能的函数
size_t ic_strstr(const char *haystack, const char *needle) {
size_t i = 0, j = 0;
while (haystack[i] != '\0') {
if (tolower(haystack[i]) == tolower(needle[j])) {
// 如果字符匹配,移动 needle 的指针
i++, j++;
if (needle[j] == '\0') { // 找到子串
return i - 1; // 返回起始位置(不包括'\0')
}
} else {
// 如果字符不匹配,重置 needle 到下一个字符
j = 0;
i++; // 继续检查下一个字符
}
}
return -1; // 如果找不到子串,返回 -1
}
int main() {
const char *haystack = "Hello, how are you?";
const char *needle = "how";
size_t pos = ic_strstr(haystack, needle);
if (pos != -1) {
printf("Substring found at position %zu\n", pos);
} else {
printf("Substring not found\n");
}
return 0;
}
```
这个 `ic_strstr` 函数实现了忽略大小写的字符串查找,并返回子串第一次出现的位置。如果要在 C 语言环境中创建这种扩展,你需要手动处理大小写转换。
阅读全文