关于strcpy一个经典问题

liuqingwu228 2007-08-04 09:00:11
char* strcpy1(char *strDest,const char *strSrc)
{
assert((strDest!=NULL)&&(strSrc!=NULL));
char *temp=strDest;
while((*strDest++=*strSrc++)!='\0')
NULL;
return temp;
}
//((*strDest++=*strSrc++)!='\0')这句话表示什么意思
//是否就是等于
while(*strSrc!='\0')
{
*strDest++=*strSrc++;
}
*strDest='\0';
...全文
212 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghao0722 2008-08-29
  • 打赏
  • 举报
回复
void strcpy(char* cA,const char* cB)
{
while(*cA++=*cB++);
}
这个就够了
其他的都是多余的
expter 2007-08-05
  • 打赏
  • 举报
回复
up
0黄瓜0 2007-08-05
  • 打赏
  • 举报
回复
while((*strDest++=*strSrc++)!='\0')
NULL;

相当于
while(1){
*strDest=*strSrc;//不管*strSrc是什么,先完成赋值操作
if(*strDest != 0)//如果没有复制到字符'\0',则移动指针
{
strDest++;
strSrc++;
}
else //否则循环结束
break
}
星羽 2007-08-05
  • 打赏
  • 举报
回复


a = b

返回的时a 或 b 的值,反正都是一样的


laoluo 2007-08-05
  • 打赏
  • 举报
回复
(*strDest++=*strSrc++) ======>(*strDest=*strSrc);strDest++;strSrc++;(VC6.0下)
在其他编译器下执行过程会略有所差异
Yao-debo 2007-08-04
  • 打赏
  • 举报
回复
其实就是一个一个字符copy
shenmiaoqi 2007-08-04
  • 打赏
  • 举报
回复
返回的 是*strDest的 值
liuqingwu228 2007-08-04
  • 打赏
  • 举报
回复
我有一个很奇怪疑问,就是(*strDest++=*strSrc++)这个东西返回是他们中间任意值吗?我以前很少这样用它!
西山小月 2007-08-04
  • 打赏
  • 举报
回复
是的
uzone 2007-08-04
  • 打赏
  • 举报
回复
iambic 2007-08-04
  • 打赏
  • 举报
回复
差不多。

64,642

社区成员

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

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