用c语言写一个memmem函数代码用例
时间: 2024-10-15 09:11:36 浏览: 65
memchr:为 Rust 优化的字符串搜索例程
`memmem`函数是C标准库中的字符串搜索函数,它在一个查找串中查找指定模式的第一个匹配。下面是一个简单的`memmem`函数的实现示例,以及如何使用它的例子:
```c
#include <string.h>
/* memmem函数原型 */
char* memmem(const void *haystack, size_t haystack_len, const void *needle, size_t needle_len);
// 示例中的memmem函数实现(仅作教学用途,实际项目中应使用库函数)
char* custom_memmem(char* haystack, size_t haylen, char* needle, size_t needlen) {
for (; haylen >= needle_len; haylen--) {
if (memcmp(haystack, needle, needle_len) == 0) { // 使用memcmp比较两段内存是否相等
return (char*)haystack;
}
haystack++; // 移动查找起点
}
return NULL; // 没有找到匹配
}
int main() {
char str1[] = "Hello, World!";
char pattern[] = "World";
size_t pattern_len = strlen(pattern);
char* match = custom_memmem(str1, sizeof(str1), pattern, pattern_len);
if (match) {
printf("Pattern found at index %ld\n", (long)(match - str1));
} else {
printf("Pattern not found in the string.\n");
}
return 0;
}
```
在这个例子中,我们首先声明了一个自定义的`custom_memmem`函数,用于在给定的`haystack`(查找串)中寻找`needle`(模式串)。如果没有找到匹配,则返回`NULL`。
在`main`函数中,我们使用这个自定义函数在`str1`中搜索`pattern`,并打印出匹配的位置,如果未找到则显示相应的提示。
注意,实际项目中应该直接使用`#include <string.h>`并调用`memmem`函数,上述代码只是为了说明目的而编写的。
阅读全文