要求:编写一个函数,实现类似strcpy的字符串复制函数。原型定义为 char * mystrcpy(char *dest, char *src)。
功能是把src所指向的字符串拷贝到dest所指的数组中,返回dest指针。(提示:src和dest所指向的区域有可能重叠)。
简单版本号:
char * mystrcpy(char *dest, char *src) { char *p = dest; while(*src != '\0'){ *dest++ = *src++; } return p; }存储空间分析:
上述情况没有考虑内存区域重叠的问题,也没有对输入參数进行合法性检測。改动后的版本号为:
char * mystrcpy(char *dest, char *src) { char *d = dest;//输入參数备份 char *s = src; int count = 0; assert(dest);//指针合法性检測 assert(src); if(src == dest){ return src; } count = strlen(src) + 1; if(count<=1){ return 0; } if(dest < src || dest >= (src + count)){ while(count--){ *d++ = *s++; } } else{ d = dest + count; s = src + count; while(count--){ *d-- =*s--; } } return dest; }