风痕的博客

一个IT人的学习记录。

C++ strcat

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

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--;
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fenghen777/article/details/46787441
文章标签: strcat
个人分类: C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C++ strcat

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭