C++ strcat

来源:互联网 发布:阿里云创业创新基地 编辑:程序博客网 时间:2024/06/04 20:02

百度了一下网络上的代码,发现大多数是有问题的,自己琢磨着写了一个加深一下理解。
字符串拼接:

char* strcat(char* s,char* t){    assert((s != NULL) && (t != NULL));//对输入源进行检测    char* stradd = (char*)malloc(sizeof(char)*(strlen(s)+strlen(t)+1));    assert(stradd != NULL);    char *temp = stradd;    while(*temp++ = *s++)    {       }    *temp--;    while(*temp++ = *t++)    {         }    return stradd;}

调用:

int main(){    cout <<"strcat" << strcat("12345","6789")<<endl;}

输出:
这里写图片描述

看一下while(*temp++ = *s++){}执行顺序:
1 将*s值赋值给*temp;
2 判断*temp值是否为空(‘\0’),如果是,执行第3步,然后跳出循环
3 temp和s指向下一个地址,转第1步

while(*temp++ = *s++)    {       }    //此时temp指向'\0'的下一位,需要把指针回退一位,让temp指向'\0'    *temp--;
0 0
原创粉丝点击