strcpy函数
char* strcpy(char *dest,const char *src) {
assert(dest!=NULL&&src!=NULL);
char *res=dest;
while(*dest++=*src++)
continue;
return res;
}
strcmp函数
int strcmp(const char *cs, const char *ct){
while(*cs==*ct){
if(*cs=='\0')
return 0;
++cs;
++ct;
}
return *cs-*ct;
}
int strcmp(const char *cs, const char *ct,size_t n){
if(!n)
return 0;
while(--n&&*cs==*ct){
if(*cs=='\0')
return 0;
++cs;
++ct;
}
return *cs-*ct;
}
int strlen(const char *src){
int n=0;
while(*src++)
++n;
return n;
}
char *strcat(char *str1,char *str2){
char *res=str1;
while(*str1)
++str1;
while(*str1++=*str2++)
continue;
return res;
}
strncpy函数
char *strncpy(char *dest,const char *src,size_t n)
{
if(!n)
return dest;
char *res=dest;
while(--n&&*dest++=*src++)
continue;
return res;
}
memset函数
void *memset(void *buf,int c,size_t n){
assert(buf!=NULL)
char *tmp=(char*)buf;
while(n-->0)
*tmp++=(char)c;
return buf;
}
memmove函数
void *memmove(void *dst, const void *src, size_t len)
{
if(NULL == dst || NULL == src){
return NULL;
}
void *ret = dst;
if( dst <= src || (char *)dst >= (char *)src + len){
//从低地址开始复制
while(len--){
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
}else{
//从高地址开始复制
src = (char *)src + len - 1;
dst = (char *)dst + len - 1;
while(len--){
*(char *)dst = *(char *)src;
dst = (char *)dst - 1;
src = (char *)src - 1;
}
}
return ret;
}