●模拟实现库函数char * strstr (char * str1, char * str2 );
strstr函数本为标准库中的函数。
用来判断字符串str2是否为字符串str1的子串。
通过两个指针分别指向字符串str1的首地址,字符串str2的首地址
来逐个字符一一的比较;
当发现str1中有str2的完整字符串,则返回str2在str1中首次出现的地址
若中间出现不一样。则str2的指针回到str2的首地址,
str1的指针不变动,接着一一比较,直到str1遍历完。
若没有找到,返回NULL
代码如下:
char *my_strstr(char *a,char *b)
{
while(*a)
{
char *p=b;
char *q=a;
while(*a==*p&&*p)
{
a++;
p++;
}
if(*p=='\0')
{
return q;
}
else
{
a++;
}
}
return NULL;
}
int main()
{
char a[]="fghasdjkasd";
char b[]="bnm";
printf("%s",my_strstr(a,b));
return 0;
}
///
///
●由库函数char * strstr (char * str1, char * str2 );
衍生出来的求:在a字符串中寻找所有b字符串的个数
通过两个指针分别指向字符串str1的首地址,字符串str2的首地址
来逐个字符一一的比较;
当发现str1中有str2的完整字符串,则个数加一
若中间出现不一样,则str2的指针回到str2的首地址,
str1的指针不变动,接着一一比较,直到str1遍历完。
int fun(char*a,char*b)
{
int k=0;
char *str;
while(*a)
{
str=b;
while(*str)
{
if(*a==*str)
{
str++;
a++;
if(*str=='\0')
{
k++;
}
}
else
{
a++;
break;
}
}
}
return k;
}
int main()
{ char a[]="asdfghjklasdfghjkl";
char b[]="asd";
int n=0;
n=fun(a,b);
printf("%d",n);
return 0;
}
模拟实现库函数strstr以及由strstr函数衍生出来的实际问题
原创
©著作权归作者所有:来自51CTO博客作者mb61cf0b2195f96的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:内存拷贝函数模拟实现
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【C语言加油站】qsort函数的模拟实现
【C语言加油站】qsort函数的模拟实现本文详细介绍了使用冒泡排序的逻辑模拟实现可以排序任意类型数组的qsort函数……
C语言 qsort排序函数 冒泡排序 回调函数 void*指针 -
函数的极限
函数极限
邻域 取值 函数极限 -
模拟实现库函数strstr
模拟实现库函数strstr 代码如下#include<stdio.h>const char* mystrstr(const char*src
库 函数 i++ 库函数 #include -
模拟实现库函数strstr 以及模拟实现函数 memcpy
完整实现函数内容
模拟实现strstr函数编写 -
模拟库函数strstr
my_strstr
#include 子串 bc -
模拟实现strstr函数
找朋友(模拟实现strstr函数)
C语言 面试题 -
由PostgreSQL衍生出来的数据库
由PostgreSQL衍生出来的数据库
pg 衍生 postgresql derive sed -
strstr函数及其代码模拟实现
strstr函数的基本用法及其代码模拟实现
C 字符串 strstr