首页 > 其他 > 详细

字符串的复制

时间:2014-12-03 23:07:16      阅读:273      评论:0      收藏:0      [点我收藏+]

不用库函数,自己编写一个字符串复制函数。

 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的情况。
bubuko.com,布布扣

而对于图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     else
16     {
17         d = dest + count;
18         s = src + count;
19 
20         while(count--)
21             *d-- = *s--;
22     }
23     return d;
24 }

 

字符串的复制

原文:http://www.cnblogs.com/philospy/p/4141444.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!