#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));
}