首页 > 代码库 > 字符串的复制

字符串的复制

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

 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 }

 

字符串的复制