研究strstr函数,自定义一个函数实现其功能(不能直接调用函数,而是使用函数指针进行调用)
时间: 2024-10-28 22:07:04 浏览: 11
`strstr` 函数在C语言中通常用于查找一个字符串(也称为模式串)在另一个字符串中第一次出现的位置。它返回的是模式串在主串中的首地址,如果找不到则返回 `NULL`。为了自定义一个类似的功能并使用函数指针进行调用,我们可以创建一个新的函数,接受两个字符串作为输入以及一个指向查找函数的指针。
下面是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
// 定义原始的strstr函数指针类型
typedef char* (*StrstrFn)(const char*, const char*);
// 自定义版本的strstr函数
char* custom_strstr(const char* haystack, const char* needle, StrstrFn strstr_ptr) {
return strstr_ptr(haystack, needle);
}
int main() {
// 假设我们有一个函数指针变量
StrstrFn original_strstr = strstr;
// 使用自定义函数
char* result = custom_strstr("Hello, World!", "World", original_strstr);
if (result) {
printf("Substring found at position: %ld\n", (long)(result - haystack));
} else {
printf("Substring not found.\n");
}
return 0;
}
```
在这个例子中,`custom_strstr` 函数接收两个字符串和一个函数指针作为参数。然后通过这个指针调用实际的 `strstr` 函数。这样做的目的是为了演示如何间接地调用已知的库函数,而不需要直接复制它的实现。
阅读全文