如何自己编写代码实现类似strstr的长尾词查找功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计349个文字,预计阅读时间需要2分钟。
1. 函数定义:`char *strstr(const char *str1, const char *str2);` - 功能:判断`str1`中是否包含子串`str2`。 - 返回值:若包含,返回`str1`中子串`str2`首字符的地址;若不包含,返回空指针NULL。
一.用法
定义:char * strstr( const char *str1, const char *str2 );
•判断str1中是否包含子串str2
•若包含,则返回在str1中子串str2首字符的地址
•若不包含,则返回空指针NULL
例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "zhangsan";
char arr2[] = "san";
char* ret = strstr(arr1, arr2);
if (ret == NULL)
{
printf("子串不存在\n");
}
else
{
printf("子串存在 且为:%s\n", ret);
}
return 0;
}
运行结果:
二、代码模拟实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
//代码模拟实现
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* p = str1;
while (*p)
{
s1 = p;
s2 = str2;
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*)p;
}
p++;
}
return NULL;
}
int main()
{
//char email[] = "zpw@bitejiuyeke.com";
//char substr[] = "bitejiuyeke";
//char* ret = my_strstr(email, substr);
char arr1[] = "zhangsan";
char arr2[] = "san";
char* ret = my_strstr(arr1, arr2);
if (ret == NULL)
{
printf("子串不存在\n");
}
else
{
printf("子串存在,且为:%s\n", ret);
}
return 0;
}
运行结果:
以上就是strstr函数的基本用法,欢迎指正~
本文共计349个文字,预计阅读时间需要2分钟。
1. 函数定义:`char *strstr(const char *str1, const char *str2);` - 功能:判断`str1`中是否包含子串`str2`。 - 返回值:若包含,返回`str1`中子串`str2`首字符的地址;若不包含,返回空指针NULL。
一.用法
定义:char * strstr( const char *str1, const char *str2 );
•判断str1中是否包含子串str2
•若包含,则返回在str1中子串str2首字符的地址
•若不包含,则返回空指针NULL
例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "zhangsan";
char arr2[] = "san";
char* ret = strstr(arr1, arr2);
if (ret == NULL)
{
printf("子串不存在\n");
}
else
{
printf("子串存在 且为:%s\n", ret);
}
return 0;
}
运行结果:
二、代码模拟实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
//代码模拟实现
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* p = str1;
while (*p)
{
s1 = p;
s2 = str2;
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*)p;
}
p++;
}
return NULL;
}
int main()
{
//char email[] = "zpw@bitejiuyeke.com";
//char substr[] = "bitejiuyeke";
//char* ret = my_strstr(email, substr);
char arr1[] = "zhangsan";
char arr2[] = "san";
char* ret = my_strstr(arr1, arr2);
if (ret == NULL)
{
printf("子串不存在\n");
}
else
{
printf("子串存在,且为:%s\n", ret);
}
return 0;
}
运行结果:
以上就是strstr函数的基本用法,欢迎指正~

