欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c的几个string库函数简单实现

程序员文章站 2022-05-27 08:21:40
#include #include #include #include&l...
 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
int fun1(char *p)
{
  int len=0;
while(*p!=0){len++;p++;}
  return len;
}
int fun2(const char *s)
{   const char *p=s;
   while(*p++);
    return p-s-1;
}
/*************
p
abcde
s-----s
1234567    
*************/
int fun3(const char *s)
{ if(*s==0)return 0;
  else return(1+fun3(s+1));
}
void *fun4(char *d,const char*s,int n)
{//assert(d);assert(s);
 char *ret=d;
while(*d){d++;}//d move to \0
while(n)       
{*d++=*s++;n--;}//\0\0\0 turn to abcde....
return ret;
 
}
void *fun5(  char *d,  char *s)
{
  char *ret=NULL;
  while(*d)
  {
    while(*s){if(*d==*s){d++;s++;}else break;}
    if(*s==0) return ret;
    else {d++;ret=d;}
  }
}//44
void *fun6(  char *s1,  char *s2)
{
char *pstr=s1;
char *p1=NULL;
char *p2=NULL;
  while(*pstr)
  {  p1=pstr;p2=s2;
    while((*p1)&&*p1==*p2){p1++;p2++;if(*p2==0)return pstr;}
     pstr++;
    
  }
return 0;
}
char *fun7(char *d,const char *s)
{
char *ret=d;
while(*d++=*s++);
return ret;
}
/*******
s1<--s2
*******/
int fun8(const char* s1,const char *s2)
{
while(*s1==*s2){if(*s1==0)return 0; s1++;s2++;}
 return (*s1-*s2);
}
/*******
s1>s2  return  1 2 3....
*******/
void *fun9(void *d,const void *s,int size)
{
void *ret=d;
char *p1=(char *)d;
char *p2=(char *)s;
while(size--){*p1++;*p2++;}
return ret;
}
void *fun10(void *d,const void *s,int size)
{
void *ret=d;
char *p1=(char *)d;
char *p2=(char *)s;
if(p1>p2&&p1<p2+size)
{
while(size--){*(p1+size)=*(p2+size);}
}
else while(size--){*p1++=*p2++;}
return ret;
}


void main()
{
char ss[]="abcde";
char s1[]="abcde";
char s2[]="abcde";
char *p=ss;
 //printf("%d\n",strlen(p));
 //printf("%d\n",fun1(p));
 //printf("%d\n",fun2(p));
 //  printf("%d\n",fun3(p));
//   printf("%s\n",fun4(s1,s2,1));//have bug printf more about s2;
//   printf("%s\n",fun6(s1,s2));
//   printf("%s\n",fun7(s1,s2));
//   printf("%d\n",fun8(s1,s2));
printf("%s\n",fun9(s1,s2,5));
printf("%s\n",fun10(s1,s2,5));
}