关闭

C++ strcat

标签: strcat
300人阅读 评论(0) 收藏 举报
分类:

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

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5040次
    • 积分:163
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条
    文章分类
    文章存档
    最新评论