3.14模拟实现字符串相关函数

strcp()

char arr[110]="xxxxxxxxxx"l

char arr2[20]="hello";

strcpy(arr1,arr2);

printf("%s\n",arr1); // \n 为字符串结束标志

//strcp(1.目标空间起始地址,2.原空间的起始地址)

     模拟实现 my_strcp()

        void my_strcp(char*dest,char*src)

        {

                        while(*src!='\0')

                        *src++;

                        *dest++;

        }

        优化:        *dest++=*src++        //最终\0赋值过去为假 退出while循环

        最终优化:        while(*dest++=*src++)

assert(断言):

头文件 #include<assert.h>

assert(src!=NULL);        //src不能为假 如果为假直接报错

while(*dest++=*src++)

const :

修饰指针变量时 const放在*左边 修饰得失*p 表示指针指向内容不能通过指针来改变的 单指针变量p本身是可修改的

int n=100;         p=&n;

*p不可修改 p可修改

代码中如果arr1arr2换位置会报错 应为arr1长度比arr2长 arr1长的放入arr2短的中不行 

void mt_strcp(*char dest,const char *src)                //此时用const则会帮助报错指出

const int num=10;

int*p=&num;                //const修饰变量 这个被修饰的变量成为常变量不可被修改 单本质还是变量

*p=20;

打印p                //num不可修改

模拟实现strlen()

int my_strlen(const char*str)

{

assert(str);                        //如果str为假 报错

size_t i,j;

while(str++)                        //size_t 是无符号整形unsigned int

        {

        j++;        

        }

        return j;                
}        

 编译型错误:一般都是语法错误

链接型错误:定义函数错误 可能是定义调用名字不一样或者根本没定义(难找)

定义

 

调用

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值