209

问答题 209 /413

手写代码:字符串复制函数

参考答案

参考回答:

模拟strcpy:
char* my_strcpy(char* dst, const char*src)
{
assert(dst != NULL);
assert(src != NULL);
char *ret = dst;
while (*dst = *src)
{
dst++, src++;
}
return ret;
}

模拟strncpy:

char* my_strncpy(char* dst,const char* src,int n)
{
assert(dst!=NULL);
assert(src!=NULL);
char* ret=dst;
while(n)
{
*dst=*src;
dst++;
src++;
n--;
}
if(*(dst-1)!='\0')
{
*dst='\0';
}
return ret;
}

模拟strcat:

char *my_strcat(char* dst, char* src)
{
assert(dst != NULL);
assert(src != NULL);
char *ret = dst;
while (*dst)
{
dst++;
}
while (*dst = *src)
{
dst++, src++;
}
return ret;
}

模拟strncat:

char *my_strncat(char* dst, const char *src, int n)
{
assert(dst != NULL);
assert(src != NULL);
char *ret = dst;

while (*dst)//将dst的指针移到‘\0'处

{
dst++;
}
while (n)
{
*dst = *src;
dst++, src++;
n--;
}
if (*(dst - 1) != '\0')
{
*dst = '\0';
}
return ret;
}