不用库函数,自己编写一个字符串复制函数。
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 else 16 { 17 d = dest + count; 18 s = src + count; 19 20 while(count--) 21 *d-- = *s--; 22 } 23 return d; 24 }