码迷,mamicode.com
首页 > 其他好文 > 详细

字符串的复制

时间:2014-12-03 23:09:34      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   使用   sp   

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

 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 }

 

字符串的复制

标签:des   style   blog   http   io   ar   color   使用   sp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!