字符串笔试面试题
1、实现strcpy函数
char *strcpy(char *destination, const char *source)
{
assert(destination!=NULL&&source!=NULL);
char* target = destinaton;
while(*destinaton++=*source++);
return target ;
}
2、实现memcpy函数
void *memcopy(void *dest,const void *src,size_t count)
{
char *pDest=(char *)(dest);
const char *pSrc=(const char *)(src);
assert(dest!=NULL&&src!=NULL);
//目的地址和源地址重叠,从源地址的末尾方向开始拷贝
if( pDest>pSrc && pDest<pSrc+count )
{
pDest = pDest + count-1;
pSrc = pSrc + count-1;
while(count--){
*pDest-- = *pSrc--;
}
}
//目的地址和源地址不重叠,从源地址的开始方向拷贝
else
{
while(count--){
*pDest++ = *pSrc++;
}
}
return pDest;
}
3、实现strcmp函数
int strcmp(const char *str1, const char *str2)
{
assert(str1!=0&&str2!=0);
while(*str1 == *str2 &&*str1 != '/0') str1++,str2++;
if(*str1 > *str2)
return 1;
else if(*str1 == *str2)
return 0;
return -1;
}
4、实现strcat函数
char *strcat(char *dest, const char *src)
{
char *tmp = dest;
while (*dest)
dest++;
while ((*dest++ = *src++) != '\0');
return tmp;
}
浙公网安备 33010602011771号