strcpy实现代码
1. strcpy实现代码
这是出现频率最高的面试题,在编写过程中一定要注意细节
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL))
throw "Invalid argument(s)";
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
return strDestCopy;
}
- 输入参数的判定
- 异常的抛出
- 循环的写法
调用方式,注意捕获异常的写法
int main()
{
char strDes[20];
char * strSrc ;
strSrc = "adfgba234";
try
{
strcpy(strDes, strSrc);
cout<<strDes<<endl;
}
catch (const char * str)
{
cout<<str<<endl;
}
}
思考
- 当拷贝函数参数 strDes 和 strSrc 内容重叠时应该怎么办呢? -- if((strDes + count<strSrc ) || (strSrc + count) <strDes ))
- 当strDes容量太小时怎么办呢?