实现strcpy和strcat

1.编写一个strcpy函数。

strcpy函数: 后面的字符串会拷贝到一个字符数组中,要求拷贝好的字符串在字符数组的首地址,并且只拷贝到'\0'的位置,原型是

char * my_strcpy(char * dest,char * src)

#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<cstring>
#include<assert.h>
using namespace std;
char * my_strcpy(char * dest,const char *src)
{
    //注意细节
    //判断是否为空 为空直接抛出异常
    assert(dest!=NULL&&src!=NULL);
    
    //判断是否为自我复制
    if(dest==src) return dest;
    
    char * p=dest; //存储目标数组起点地址
    while(*src!='\0')
    {
        *dest=*src;
        ++dest;
        ++src;
    }
    *dest='\0';
    return p;//支持链式表达式
}

int main()
{
    const char * t= "hello";
    char *f = new char [50];
    my_strcpy(f,t);
    cout<<f<<endl;
    return 0;
}

2.1.编写一个strcat函数,请编写一个函数将字符串s2添加到字符串s1的末端,函数不受s1、s2空间大小的限制。

#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<cstring>
#include<assert.h>
using namespace std;
//参数加入了const
char * my_strcat(char * dest,const char * src)
{
    //加入判空
    assert(dest!=NULL&&src!=NULL);
    char * p =dest;
    //找到dest串结束符的位置
    while(*dest!='\0')
        ++dest;
    while(*src!='\0')
    {
        *dest=*src;
        ++dest;++src;
    }       
    //加入串结束符
    *dest = '\0';
    return p;
}
int main()
{
     char t[8]="hello";
     const char * d ="ttt";
     my_strcat(t,d);
     cout<<t<<endl;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,902评论 0 2
  • ###字符数组的定义:有一定顺序关系的若干个字符型变量的集合,就是字符数组。可以是一维的,也可以是多维的。字符数组...
    邻家的妹妹阅读 4,155评论 0 1
  • 一、字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 s...
    JaiUnChat阅读 5,583评论 0 7
  • 1)字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strc...
    XDgbh阅读 10,039评论 0 10
  • 同事看过我的朋友圈,问我:欧姐,你每天清晨五点起床,起那么早干嘛?我说:起来学习呀,同事说:什么学习那么重...
    欧秀娟阅读 3,994评论 2 4

友情链接更多精彩内容