函数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++) !='\0');
6     return dest;
7 } 

 

针对代码实现的说明:

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

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

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

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

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

 

更多详见strcpy函数的百科

posted @ 2017-07-26 16:42  王大咩的图书馆  阅读(496)  评论(0)    收藏  举报