关于strcpy一个经典问题
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 ';
[解决办法]
返回的 是*strDest的 值
[解决办法]
(*strDest++=*strSrc++) ======> (*strDest=*strSrc);strDest++;strSrc++;(VC6.0下)
在其他编译器下执行过程会略有所差异
[解决办法]
while((*strDest++=*strSrc++)!= '\0 ')
NULL;
相当于
while(1){
*strDest=*strSrc;//不管*strSrc是什么,先完成赋值操作
if(*strDest != 0)//如果没有复制到字符 '\0 ',则移动指针
{
strDest++;
strSrc++;
}
else //否则循环结束
break
}