size_t strlen(const char* str)
{
assert(str!=NULL);
size_t length=0;
while((*str++)!='\0')
++length;
return length;
}
不用变量,递归实现的strlen
size_t strlen(const char* str)
{
assert(str!=NULL);
return *str=='\0'?0:1+strlen(++str);
}
int strcmp(const char* str1,const char* str2)
{
assert(str1!=NULL&&str2!=NULL);
int ret=0;
while(!(ret=*str1-*str2)&&*str1)
{
++str1;
++str2;
}
if(ret<0)
ret=-1;
else if(ret>0)
ret=1;
return ret;
}
char* strcpy(char* strDest,const char* strSrc)
{
assert(strDest!=NULL&&strSrc!=NULL);
char* address=strDest;
while(*strDest++=*strSrc++)
;
return address;
}
char* strncpy(char* strDest,const char* strSrc,size_t n)
{
assert(strDest!=NULL&&strSrc!=NULL&&n>0);
char* address=strDest;
for(size_t i=0;i<n;i++)
{
if(*strSrc=='\0')
break;
*strDest++=*strSrc++;
}
*strDest='\0';
return address;
}
char* strcat(char* strDest,const char* strSrc)
{
assert(strDest!=NULL&&strSrc!=NULL);
char* address=strDest;
while(*strDest!='\0')
++strDest;
while(*strDest++=*strSrc++)
;
return address;
}
char* strncat(char* strDest,const char* strSrc,size_t n)
{
assert(strDest!=NULL&&strSrc!=NULL&&n>0);
char* address=strDest;
while(*strDest!='\0')
++strDest;
for(int i=0;i<n;i++)
{
if(*strSrc=='\0')
break;
*strDest++=*strSrc++;
}
*strDest='\0';
return address;
}