在 C 语言中, strstr 函数用于在一个字符串中查找另一个字符串首次出现的位置。
strstr 函数的原型为: char *strstr(const char *haystack, const char *needle);
haystack 是要被搜索的字符串, needle 是要查找的子字符串。
如果找到了 needle 在 haystack 中首次出现的位置,就返回指向该位置的指针;如果没有找到,则返回 NULL 。
以下是一个简单的示例代码,展示了如何使用 strstr 函数:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Hello, World!";
char str2[] = "World";
char *ptr = strstr(str1, str2);
if (ptr!= NULL)
{
printf("找到了,从位置 %ld 开始 \n", ptr - str1);
}
else
{
printf("未找到\n");
}
return 0;
}
在这个示例中,输出结果为找到了,从位置 7 开始 ,因为"World"在"Hello, World!"中的起始位置是 7 。
那它这个函数是怎么实现的呢,以下是模拟实现 strstr 函数的一种可能思路:
1. 首先,定义一个函数,接受两个字符串指针作为参数,分别表示主字符串和子字符串。
2. 使用两个指针分别遍历主字符串和子字符串。
3. 从主字符串的开头开始,每次将主字符串的当前位置与子字符串的开头进行比较。
4. 如果当前字符匹配,就继续比较后续的字符,直到子字符串的所有字符都匹配成功。
5. 如果在比较过程中出现不匹配的字符,就将主字符串的指针向后移动一位,重新开始比较。
6. 如果子字符串的所有字符都匹配成功,返回主字符串中匹配开始的位置指针。
7. 如果遍历完主字符串都没有找到匹配的子字符串,返回 NULL 。
以下是用 C 语言的代码示例: