strcpy函数的实现代码很短,但是还是有很多细节需要注意的:如对空指针的检查,以及第二参数最好定义为常量指针。具体代码如下:
#include "stdafx.h"
#include <iostream>
#include <cassert>
using namespace std;
char* My_strcpy(char *dest,const char *src)
{
assert(dest!=nullptr && src!=nullptr); //断言两个指针非空
char *p1=dest;
char *p2=const_cast<char*>(src);
while((*p1++=*p2++)!='\0'); //最后的'\0'也会进行复制
return dest;
}
int _tmain(int argc, _TCHAR* argv[])
{
char dest[]="hello";
char src[]="word";
cout<<dest<<endl;
My_strcpy(dest,src);
cout<<dest<<endl;
return 0;
}
执行结果如下: