字符串复制中的while条件

来源:互联网 发布:苏州网络耗材批发 编辑:程序博客网 时间:2024/06/08 03:38

void strCpy(char *s1,char *s2){      while(*s1++=*s2++);}

我开始对while循环里面的那个结束条件有些迷惑,最后通过程序调试找到了答案。此函数的目的将s2指向的字符串复制到s1中,此结束条件是s2指向的字符串全部被复制完了,while就结束了(前提是s1指向的空间能够容纳s2指向的字符),而不是遇到'\0'结束,这里面是一个赋值语句,'\0'也被赋值过去了,所以最后也不需要补充'\0'了。

#include<iostream>using namespace std;void strCpy(char *s1,char *s2){     while(*s1++=*s2++)     {           printf("%d\n",*s2);     }}int main(){      char s1[20]="haha";      char s2[20]="hehe";      strCpy(s1,s2);      cout<<s1<<endl;         return 0;}
打印:97

            104

             97

             0

             haha

'\0'用%d打印出来是0,则'\0'也被复制了。类似while(str[i])当str[i]='\0'时,对应int是0,while循环也就结束了。




0 0