编写strcpy 函数

已知strcpy函数的原型是char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。... 已知strcpy 函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数 strcpy
(2)strcpy 能把strSrc 的内容复制到strDest,为什么还要char * 类型的返回值?
回答者: ivaniren - 高级魔法师 七级 回答的有个问题:
没有对传入参数strDest和strSrc进行检查,一但它们中有一个为NULL,立死!
展开
 我来答
艳阳高照的午后
2015-06-01 · TA获得超过1万个赞
知道大有可为答主
回答量:1.2万
采纳率:97%
帮助的人:6302万
展开全部
  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;
  }
  
ivaniren
2008-05-22 · TA获得超过1472个赞
知道小有建树答主
回答量:1088
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <string.h>
char* StrCpy(char *strDest, const char *strSrc)
{
if(!strDest||!strSrc)
return NULL;
if (!strlen(strSrc))
{
*strDest='\0';
return strDest;
}
char* tmp=strDest;
do
{
*tmp++=*strSrc;
} while (*strSrc++);
return strDest;
}
int main()
{
char str1[20],str2[20];
scanf("%s",str2);
printf("%s\n",StrCpy(str1,str2));//这一行就说明了返回char*的作用
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式