您的位置:首页 > 其它

字符串部分函数的实现

2015-11-20 15:27 316 查看
strstr函数的实现

本函数是用来判断字符串str2是否是str1的子串。如果是,则函数返回str2在str1中首次出现的的当前地址;否则,返回NULL。代码模拟:#include<stdio.h>//模拟实现strstr
#include<string.h>
int main()
{ char *my_strstr(char *str1,char *str2);
char *str1="she is a good teacher";
char *str2="good";
printf("%s\n",my_strstr(str1,str2));
return 0;
}
char *my_strstr(char *str1,char *str2)//返回指针的函数
{

int i,j;
int len1=strlen(str1),len2=strlen(str2);
for(i=0;i<len1-1;i++)
{
for(j=0;j,j<len2-1;j++)
if(str2[j]==str1[i])
return &str1[i];
}
return NULL;//如果上述的if检测为0则可以执行到此步骤
}
代码结果:



strncat函数的实现

把str2所指字符串的前n个添加到字符串str1后,并在结尾处添加\0,应该注意的是要保证str1有足够的空间能够容纳str2的前n个字符代码模拟:
#include<stdio.h>//模拟实现strncat
int main()
{
void my_strncat(char *p1,char *p2,int n);
char str1[50]="what do you want to do?",str2[]="what are you doing?";//str1开辟了足够的空间
int n;
scanf("%d",&n);
my_strncat(str1,str2,n);
printf("%s\n",str1);
return 0;
}
void my_strncat(char *p1,char *p2,int n)
{
while(*p1!='\0')
{
p1++;
}
while(n>0)
{
*p1=*p2;
n--;
p1++;
p2++;
}
*p1='\0';//最后将\0也拷贝到str1
}
代码结果:




strcat函数的实现

该函数不同于strncat,stncatt是将str2中的前n个字符添加到str1后,而本函数是将整个部分添加到str1后,同样应该注意str1应该开辟足够大的空间。
代码模拟:

#include<stdio.h>//模拟实现strcat
#include<string.h>
int main()
{
void my_strcat(char *p1,char *p2,int n);
char str1[50]="what do you want to do?",str2[]="what are you doing?";
int n =strlen(str2);
my_strcat(str1,str2,n);
printf("%s\n",str1);
return 0;
}
void my_strcat(char *p1,char *p2,int n)
{
while(*p1!='\0')
{
p1++;
}
while(n>0)
{
*p1=*p2;
n--;
p1++;
p2++;
}
*p1='\0';
}
代码结果:



(本次实现了strstr,strncat,strcat)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息