1、已知 strcpy 的函数原型:char * strcpy(char * strDest, const char * strSrc) 其中 strDest 是目的字符串,strSrc 是源字符串。不调用 C++/C 的字符串库函数,请编写函数 strcpy。
注意:1、不能调用 C++/C 的字符串库函数;2、返回值为 char * 类型,可以实现链式表达式,如:int lenght = strlen( strcpy(strDest, "Hello World!") );
1 #include <stdio.h> 2 #include <assert.h> 3 4 char * strcpy(char * strDest, const char * strSrc) 5 { 6 assert((strDest != NULL) && (strSrc != NULL)); 7 char * address = strDest; 8 while ((*strDest++ = *strSrc++) != '\0') 9 NULL; 10 return strDest; 11 }
C语言标准库中关于 strcpy 的典型实现如上,不过此代码有缺陷。
缺陷1:默认 strDest 指向的空间足以容纳 strSrc 指向的字符串,至少也一样大;
缺陷2:默认 strDest 指向的空间与 strSrc 指向的空间不重叠。