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函数的百科。