编写strcpy 函数

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:02:23
已知strcpy 函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数 strcpy
(2)strcpy 能把strSrc 的内容复制到strDest,为什么还要char * 类型的返回值?
回答者: ivaniren - 高级魔法师 七级 回答的有个问题:
没有对传入参数strDest和strSrc进行检查,一但它们中有一个为NULL,立死!

strcpy函数
  C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间。
  典型实现:

  /**********************
  *C语言标准库函数strcpy的一种典型的工业级的最简实现
  *返回值:目标串的地址。
  *对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
  *参数:des为目标字符串,source为原字符串
  */
  char* strcpy(char* des,const char* source)
  {
  char* r=des;
  while((*(des++)=*(source++))!='\0');
  return r;
  }
  /*while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值NULL后,循环停止*/
  

  应用实例:

  已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);
  ⒈strcpy的实现代码
  char * strcpy(char * strDest,const char * strSrc)
  {
  if ((NULL==strDest) || (NULL==strSrc)) //[1]
  throw "Invalid argument(s)"; //[2]
  char * strDestCopy = strDest; //[3]
  while ((*strDest++=*strSrc++)!='\0'); //[4]
  return strDestCopy;
  }

#include <stdio.h>
#i