C笔试题之strcpy 与 strncpy

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 指向的空间不重叠。

猜你喜欢

转载自www.cnblogs.com/yangzx/p/10845822.html
今日推荐