2022/4/15模拟实现字符串相关函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//模拟实现字符串相关函数
#include<string.h>
//void my_strcpy(char* dest, char* src)
//{
//    //这个代码不好
//    while (*src != '\0')
//    {
//        *dest = *src;
//        dest++;
//        src++;
//    }
//    *dest = *src;
    //}
    //#include<assert.h>
const 阻止数据被修改
//void my_strcpy(char* dest, const char* src)
//{
//    assert(src != NULL);//断言
//    assert(dest != NULL);//断言
//    while (*dest++ = *src++)
//    {
//        //即copy了\0,又使得循环停止
//        //还能再优化
//        ;
//    }
//    //while (*src != '\0')
//    //{
//    //    *dest++ = *src++;
//    //}
//    //*dest = *src;
//}
//int main()
//{
//    char arr[20] = "xxxxxxxxxxxxxx";
//    char arr1[10] = "hello";
//    my_strcpy(arr, arr1);
//    printf("%s\n", arr);
//    return 0;
//}

//int main()
//{
//    /*int num = 10;
//    int* p = &num;
//    *p = 20;*/
//    //const int num = 10;//const 修饰变量,这个变量就是常变量
//    //const int* p = &num;//const 修饰指针变量的时候,const放在*的左边,修饰的是*p,表示指针指向的内容,是不能通过指针来改变的
//    但是指针变量本身是可以修改的
//    ///**p = 20;*/
//    //int n = 100;
//    //p = &n;
//    const int num = 10;//const 修饰变量,这个变量就是常变量
//    int* const p = &num;//const 修饰指针变量的时候,const放在*的右边,修饰的是指针变量p,表示指针变量不能被改变
//    //但是指针的内容可以被改变
//    *p = 20;
//    int n = 100;
//    /*p = &n;*/
//    printf("%d\n", num);
//    return 0;
//
//}

#include<assert.h>
//void my_strcpy(char* dest, char* src)
//{
//    //这个代码不好
//    while (*src != '\0')
//    {
//        *dest = *src;
//        dest++;
//        src++;
//    }
//    *dest = *src;
//    }
//    #include<assert.h>
//const 阻止数据被修改


//把src指向的内容拷贝放进dest指向的空间中
// 从本质上讲,希望dest指向的内容被修改,src指向的内容不应该被修改
//strcpy返回的是目标空间的起始地址
char* my_strcpy(char* dest, const char* src)
{
    assert(src != NULL);//断言
    assert(dest != NULL);//断言
    char* ret = dest;
    while (*dest++ = *src++)
    {
        //即copy了\0,又使得循环停止
        //还能再优化
        ;
    }
    return ret;

}

// strlen 是求字符串长度
// my_strlen 1.const 2.assert

int main()
{
    char arr[20] = "xxxxxxxxxxxxxx";
    char arr1[10] = "hello";
    
    printf("%s\n", my_strcpy(arr, arr1));//链式访问
    return 0;
}

偷懒一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值