当前位置:   article > 正文

模拟实现strcpy(非常易懂)

模拟实现strcpy(非常易懂)

一 ·

   1.strcpy是什么

   2.strcpy使用

   3.监视strcpy

二.模拟实现strcpy

   1.初步实现

   2.输入空指针

   3.assert

   4.阶段完整代码

三.返回值

1.返回类型

2.const

四.完整代码

总结

前言

strcpy我们并不陌生,而使用strcpy中会出现复制错误,复制地方错误,又该如何解决这些错误呢?

答案就在今天揭晓

一.1.strcpy是什么

 2.strcpy的实现

好神奇哦,arr1中的hello全部复制到arr2中了,看到这里,有些同学不免产生疑问,屏幕上显示的是hello,为什么没有\n呢?请大家接着往下看,马上揭晓答案哦。

3.监视分析

1.赋值,将*赋给arr1,将hello和\n赋给arr2

2.复制操作

3.原理图

二.

1.模拟实现

本质:取出地址,然后往后加加

实现:将src替换掉dest,替换一次指针加一,src,dest同时往后走,src遍历hello\n,当src指向\n跳出遍历

实现原理

通过观察arr1,它含有\n,那有同学提出疑问,src可以直接访问arr1吗?当然可以的啦。

一下就是实现过程

本质:直接打印\0,无需最后交换\0

用src替换dest,src碰上不是\0,替换*,然后指针src继续往后走,直至\0结束替换

2.空指针

有空指针后程序报错了,咦,怎么会出现这个问题呢,我们又该如何解决这个问题呢?接下来我会指出并纠正它嘞。

我们可以先判断src以及dest中是否存在空指针,如果有空指针,那么就不执行后续操作。

程序在运行过程中出现了越界访问,我们怎样解决这个问题呢?

其实很简单,看我的操作

扩大了arr开辟的内存空间,去装下*

我想到一个问题,小明蛮粗心,他写了代码,他认为这串代码是对的,实际上存在错误的。第二天,小明开心的把代码交给上司,上司说,你被开除了。接下来,我们引进新的函数断言。

3.断言

作用:assert中可以放一个表达式,如果表达式为假,就报错,如果为真那就继续执行。

看见程序给你报错了把,感觉assert是不是很实用呀,当然喽,别忘了加上头文件

4.完整代码

上述代码存在一系列问题的,我们又该如何解决呢?那我们看看下面的图

以下是解决后的代码

有的小伙伴提出疑惑了,const是啥嘞,有啥作用嘞,之后我会专门出一个博客讲解,别急哟。

好啦,以上就是我模拟实现strcpy的完整过程,我知道其中有许多不足,望大家指出。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/388317
推荐阅读
相关标签
  

闽ICP备14008679号