strcpy函数的写法

lsangame 2011-08-29 05:10:09
  1.strcpy的实现代码
  char * strcpy(char * strDest,const char * strSrc)
  {
   if ((strDest==NULL)||(strSrc==NULL)) //[1]  
 throw "Invalid argument(s)"; //[2]   

 char * strDestCopy=strDest; //[3]
while ((*strDest++=*strSrc++)!='\0'); //[4]  

  return strDestCopy; //[5]
  }

对于以上strcpy的实现,为什么要用第[3]句???
诚望赐教!!!

如下:如果把第[3]句去掉,在第[5]句时直接返回 strDest,有什么不妥??

  char * strcpy(char * strDest,const char * strSrc)
  {
   if ((strDest==NULL)||(strSrc==NULL)) //[1]  
 throw "Invalid argument(s)"; //[2]   

while ((*strDest++=*strSrc++)!='\0'); //[4]  

  return strDest; //[5]
  }

百度上说是“忘记保存原始的strDest值,说明答题者逻辑思维不严密。”
求解释???
...全文
117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsangame 2011-08-29
  • 打赏
  • 举报
回复
结帖。
三位分了
lsangame 2011-08-29
  • 打赏
  • 举报
回复
谢了楼上三位。
现在明白了
limang89 2011-08-29
  • 打赏
  • 举报
回复
替LZ发了下代码。。。
limang89 2011-08-29
  • 打赏
  • 举报
回复
学习。。。

 //1.strcpy的实现代码
  char * strcpy(char * strDest,const char * strSrc)
  {
   if ((strDest==NULL)||(strSrc==NULL)) //[1]  
 throw "Invalid argument(s)"; //[2]   

 char * strDestCopy=strDest; //[3]
while ((*strDest++=*strSrc++)!='\0'); //[4]  

  return strDestCopy; //[5]
  }

//对于以上strcpy的实现,为什么要用第[3]句???
//诚望赐教!!!

//如下:如果把第[3]句去掉,在第[5]句时直接返回 strDest,有什么不妥??

  char * strcpy(char * strDest,const char * strSrc)
  {
   if ((strDest==NULL)||(strSrc==NULL)) //[1]  
 throw "Invalid argument(s)"; //[2]   

while ((*strDest++=*strSrc++)!='\0'); //[4]  

  return strDest; //[5]
  }

//百度上说是“忘记保存原始的strDest值,说明答题者逻辑思维不严密。”
//求解

仙度瑞城 2011-08-29
  • 打赏
  • 举报
回复
while ((*strDest++=*strSrc++)!='\0'); //[4]  
这一句strDest指针是要往后移动的..这样才能赋值..保存strSrc的内容..
最后strDest就不是指向字符串起始地址了..
luciferisnotsatan 2011-08-29
  • 打赏
  • 举报
回复
char * strDestCopy=strDest;保存起始位置呀。*strDest++指向移动了。while后就指向最后了
lsangame 2011-08-29
  • 打赏
  • 举报
回复
排好版的,上来乱了!

64,660

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧