字符串(1)—strcpy,strncpy,strcat,strncat,strcmp,strncmp,strlen,strchr,strrchr实现
int My_strlen (const char *src)
{
assert(src!=NULL);
int len=0;
while(*src++!='\0')
{
len++;
}
return len;
}
int My_strcmp(const char *des,const char *src)
{
assert(des!=NULL&&src!=NULL);
int temp=0;
while(*des==*src&&*src!='\0')
{
des++;
src++;
}
if(*des > *src){temp=1;}
else if(*des < *src){temp=-1;}
else {temp=0;}
return temp;
}
int My_strncmp(const char *des,const char *src,int n)
{
assert(des!=NULL&&src!=NULL);
if(n<=0){return false;}
while(*des==*src && *src!='\0'&&--n!=0)
{
des++;
src++;
}
int a=*des-*src;
if(a>0){a=1;}
else if(a<0){a=-1;}
else{a=0;}
return a;
}
char *My_strcat(char *des,const char *src)
{
assert(des!=NULL&&src!=NULL);
char *p=des;
while(*des!='\0'){des++;}
while((*des++=*src++) !='\0'){}
return p;
}
char *My_strncat(char *des,const char *src,int n)
{
assert(des!=NULL&&src!=NULL);
char *p=des;
while(*des!='\0'){des++;}
for(int i=0;i<n&&src[i]!='\0';i++)
{*des++=src[i];}
*des='\0';
return p;
}
char *My_strcnpy(char* des,const char* src,int n)
{
assert(des!=NULL&&src!=NULL);
char * p =des;
int i=0;
for( i=0;i<n && src[i]!='\0';i++)
{
des[i]=src[i];
}
des[i]='\0';
return p;
}
char *My_strcpy(char *des,const char *src)
{
assert(des!=NULL&&src!=NULL);
char *p=des;
while(*src !='\0'){*des++=*src++;}
*des='\0';
return p;
}
char * my_strchr( char * str,char ch)//找到第一个字符ch的位置
{
assert(str!=NULL);
while(*str!='\0')
{
if(*str==ch)
{
return str;
}
str++;
}
return NULL;
}
char *my_strrchr(char*str,char ch)//找到最后一个字符ch的位置
{
assert(str != NULL);
char * now = my_strchr(str,ch);
char *last=NULL;
while( now != NULL)
{
last=now;
now=my_strchr(now+1,ch);
}
return last;
}