以下函数乃个人总结的最完美版本,欢迎交流。最好记下他们吧,被问的概率几乎100%。
strcpy函数:
char *strcpy(char * strDest,const char* strSrc) //注意第二个参数用const 修饰
{
assert((strDest!=NULL)&&(strSrc!=NULL));
char *address = strDest;
while((*strDest+=*strSrc++)!='/0');
return address;
}
memcpy函数:
void* memcpy(void *pvTo,void * pvForm,size_t size)
{
assert(pvTo!=NULL&&pvFrom!=NULL);
assert(pbTo>=pvFrom+size||pvFrom>=pvTo+size); //防止内存重叠
byte *pbTo =(byte *)pvTo;
byte *pbFrom =(byte *)pvFrom;
while(size-->0)
*pbTo++=*pbFrom++;
return pvTo;
}
strlen完美版:
int strlen(const char * str)
{
assert(str!=NULL);
int len =0;
while((*str++)!='/0')
len ++;
return len;
}
strcmp函数完美版:
int strcmp(const char * str1,const char *str2)
{
while(1)
{
if(*str1>*str2) return 1;
else if(*str1<*str2) return -1;
else return 0;
str1++;
str2++;
}
}