2 u010770770 u010770770 于 2015.06.19 17:08 提问

strcpy函数原型跪求答案

⒈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;
}

while ((*strDest++=*strSrc++)!='\0');想问下,这句的判断条件到底是什么啊?还请哪位大神
把这句话拆开写一下,感谢感谢

2个回答

oyljerry
oyljerry   Ds   Rxr 2015.06.19 17:25
 while (*strDest!='\0')
{
    *strDest=*strSrc;
        strDest++;
        strSrc++;
}
wilsoft
wilsoft 错了,应该是如果在赋值之前dest就是0,怎么办?函数就不工作了。
2 年多之前 回复
wilsoft
wilsoft 应该是先do,最后做while吧,你这样写最后的0是不复制的
2 年多之前 回复
frank_20080215
frank_20080215   2015.06.21 13:04

其实就是*strSrc ='\ 0',读完数据了。
*strDest = *strSrc,也就是*strDest被赋值为0,表示拷贝到完了(应该结束了)。
此时,*strDest = *strSrc表达式的值为0,循环判断条件判断该表达式的值为0,不满足循环条件,就退出循环。
++的运算区别可以自己查查C语言教材。

C语言的精炼特色让你开开眼吧。

Csdn user default icon
上传中...
上传图片
插入图片