strcpy的实现
char *strcpy(char *strDest, const char *strSrc)
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != '\0' )
NULL;
return address;
}
strcat的实现
char* strcat(char *str1,char *str2)
{
asser((str!=NULL) && (str2!=NULL));
char* tempt = str1;
while(*str1++!='\0')
while(*str2!='\0')
{
*str1++ = *str2++;
}
*str1 = '\0';
return tempt;
}
strcmp的实现
int strcmp(const char* str1, const char* str2)
{
assert((str1 != NULL) && (str2 != NULL);
int ret = 0;
while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2))
{
str1++;
str2++;
}
if(ret > 0)
{
return 1;
}
else if (ret < 0)
{
return -1
}
return 0;
}
memcpy的实现
void* memcpy(void *dest , const void* src , size_t count)
{
assert( (dest != NULL) && (src != NULL)); //安全检查
assert(count > 0);
char* psrc = (char *)src;
char* pdest = (char *)dest;
while(count--)
{
*pdest++ = *psrc++;
}
return dest;
}
这里的memcpy有两个问题
1.按char类型copy,效率太低,想想是否按指针类型别的方式拷贝(考虑内存对齐的问题)
2.没有考虑dest与src地址有重叠的问题
现在没时间,后面有时间再改进!!!!