首页 > 代码库 > 字符串的复制
字符串的复制
不用库函数,自己编写一个字符串复制函数。
1 //Version 1 2 1 char * mystrcpy(char * dest, const char * src) 3 2 { 4 3 char *d = dest; 5 4 6 5 assert((dest != NULL) && (src != NULL)); 7 6 while(*src != ‘\0‘) 8 7 *d++ = *src++; 9 8 *d = ‘\0‘; //it is important.10 9 return dest;11 10 }
1 //Version 2 2 char * mystrcpy(char * dest, const char * src) 3 { 4 char *d = dest; 5 int count; 6 7 count = strlen(src) + 1; 8 assert((dest != NULL) && (src != NULL)); 9 while(count--)10 *d++ = *src++;11 return dest;12 }
但是千万注意,上述代码并不完整,只适用于以下图1和2的情况。
而对于图3的情况使用上面的代码会产生覆盖的现象,可以采用从后往前复制的方法,完整的代码如下:
1 char * mystrcpy(char * dest, const char * src) 2 { 3 char * d = dest; 4 char * s = src; 5 int count; 6 7 assert((dest != NULL) && (src != NULL)); 8 count = strlen(src) + 1; 9 10 if(dest < src || dest > src+count)11 {12 while(count--)13 *dest++ = *src++;14 }15 else16 {17 d = dest + count;18 s = src + count;19 20 while(count--)21 *d-- = *s--;22 }23 return d;24 }
字符串的复制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。