函数strcpy的实现

strcpy函数的百科中给出了各种情况的详细说明,这里,仅给出一些注意事项:

1、strcpy的函数原型是:

1 /* dest(destination)为目标字符串,src(source)为原字符串*/
2 char *strcpy(char *dest,const char *src); 

 注:C++中strcpy函数在cstring头文件中,即:#include<cstring>。

2、功能:

将src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间中。

值得注意的是:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,即不重叠且目标字符串的地址够大。另外函数的返回值是指向dest的指针

3、实现

1 char *strcpy(char *dest,const char *src)
2 {
3     assert((dest !=NULL)&&(src !=NULL));
4     char *addr=dest;
5     while((*addr++ = *src++) !='');
6     return dest;
7 } 

针对代码实现的说明:

a)第三行:指针一定要先检查其有效性;另外,检查有效性时,最好不要用( !dest&& !src),在本例中char *转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致出错概率增大和维护成本升高;

b)第四行:要先保存目标地址以便返回;

c)第五行:将src字符串复制到dest时,要将其结尾的 '' 也要复制过来,

d)第六行:返回dest的原始值使函数能够支持链式表达式。如:

1 int len=strlen(str(strA,strB));

更多详见strcpy函数的百科

原文地址:https://www.cnblogs.com/love-yh/p/7240506.html