字符串部分函数的实现

原创 2016年05月30日 10:46:22
  • 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则可以执行到此步骤

}

代码结果:

wKioL1ZOxCLw6sP-AAAeRc2Xlkg069.png

  • 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

}

代码结果:

wKioL1ZOySCTjCXYAAAkoT38mfc441.png



  • 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';

}

代码结果:

wKioL1ZOyxfhQk1hAAAsU2g2FVg357.png

(本次实现了strstr,strncat,strcat)



本文出自 “anser” 博客,转载请与作者联系!

版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言 - 自定义实现字符串部分复制函数

自定义实现字符串部分复制函数
  • sinat_34104446
  • sinat_34104446
  • 2016年12月20日 13:04
  • 2366

Java编程题目-3:字符串自定义encode(),decode()

这是去一个小公司遇到的机试题,当时花了一个多小时写完的,但是有很多细节没考虑好,题目如下:请您用Java语言实现两个函数encode()和decode(),分别实现对字符串的变换和复原.变换函数enc...
  • u011314731
  • u011314731
  • 2016年07月01日 23:41
  • 576

完成字符串拷贝(sprintf、strcpy 及 memcpy 函数)函数之间的区别

sprintf 可以进行额外的格式化 strcpy 会复制直到出现 '' 为止,可能溢出 strncpy 会复制一个以 '' 结束的字符串,但是如果字符串长度超过指定数量则被截断,但结果可能不包含...
  • ycguhang
  • ycguhang
  • 2013年02月19日 21:25
  • 6175

用指针和数组实现字符串复制

/**************** 用指针和数组实现字符串复制 ****************/ #include #define N 80 void MyStrcpy(cha...
  • qq_36020968
  • qq_36020968
  • 2017年05月19日 20:26
  • 634

实现一个replace函数替换掉指定c串中子字符串

基本思路,先扫描source字符串, 记录下所有
  • nodeathphoenix
  • nodeathphoenix
  • 2014年07月19日 11:42
  • 4615

模拟实现部分字符串函数

一、strlen函数,计算字符串长度的函数。它的的模拟实现有三种方式: 1、计数器 int my_strlen(char* str) { int count = 0; while (*str!='...
  • weixin_37963567
  • weixin_37963567
  • 2017年07月20日 18:13
  • 110

SQL中字符串截取、连接、替换等函数的用法

一、SQL中SUBSTRING函数的用法 功能:返回字符、二进制、文本或图像表达式的一部分 语法:SUBSTRING ( expression, start, length ) SQL 中的 su...
  • huanghui036
  • huanghui036
  • 2013年11月21日 14:13
  • 4247

指针—字符串复制的方法

这里用了三种方法进行复制 1.地址法://指针练习题: //将字符串a复制到字符串b. 这里使用的是地址法 #include int main() { char a[]=...
  • u012411994
  • u012411994
  • 2014年05月11日 14:02
  • 1749

c中字符串分割函数strtok

1. strtok介绍 众所周知,strtok可以根据用户所提供的分割符(同时分隔符也可以为复数比如“,。”) 将一段字符串分割直到遇到"\0". 比如,分隔符=“,” 字符串=“Fred,...
  • sjpz0124
  • sjpz0124
  • 2015年08月16日 23:54
  • 742

几个常见字符串处理函数的实现原理

字符串是一种常见的数据结构,对字符串的处理又可以十分灵活,所以在实际开发,尤其是非数值处理中,字符串的应用非常广泛。虽然很多字符串操作都封装在了函数库里,应用程序可以直接通过调用库函数来实现字符串处理...
  • suaoyang
  • suaoyang
  • 2014年07月09日 18:26
  • 1860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串部分函数的实现
举报原因:
原因补充:

(最多只允许输入30个字)