字符串复制

void strcpy(char *s,char *t)
{
while(*s++=*t++)
;
}
这段代码跟字符串复制有什么关系?为什么在判断条件里用赋值呢?循环体怎么是空语句啊?
下面911来解释一下上述代码吧。
其执行步骤如下:
1)*s=*t,复制字符
2)判断*s是否为真。若为假,则退出循环;否则执行第3)步。因为c语言里字符串是以字符数组的形式存储的,并且其结尾是"\0"(NULL)。在ASCII编码里,NULL=0,遇到NULL时,也就是*s为假。
3)s和t自增1,指向下一个地址,执行第一步。
上面的代码在语义上等于下面的代码:
while((*t)   !=   0){  
          *s   =   *t;  
          s++;  
          t++;  
  }   
   
posted @ 2008-05-21 15:54  911  阅读(2420)  评论(0编辑  收藏  举报