C语言字符串&&内存函数的介绍

目录

零.前言

一.字符串函数

        ①strlen

        ②strcpy

        ③ strcat

        ④strcmp

        ⑤strstr

      

二.内存函数 

①memcpy

②memmove

三.结语


零.前言

        在c语言的学习过程中,不免会遇到对字符串的操作与处理,而c语言本身并没有字符串变量,只能用数组存储,这样操作起来就比较繁琐。所以学习使用字符串函数就显得比较重要,这些函数可以减少字符串的繁琐程度。

本章用到的头文件:

<stdio.h>

<string.h>(包含了字符串函数和内存函数)

<assert.h> (包含了assert函数)


一.字符串函数

        ①strlen

总所周知,字符串以'\0’作为结束标志strlen函数的作用返回的是在字符串中 '\0' 前面出现的字符个数,也就是求得字符串的长度。

 

ps:strlen原型

        用法:括号中是字符数组的首地址,返回值是一个无符号整型。也就是给函数传入数组首地址,返回字符串的长度。

使用方法与使用效果如下:

 

 

        为了更好的理解使用函数,接下来进行我对函数的模拟实现。已知字符串是以‘\0’为结束标志,那么我们就可以利用这个特性进行模拟实现。

        ②strcpy

        我们先来看函数的原型。

        这个函数的作用是用来进行字符串的拷贝。函数的第一个参数destination 是拷贝的目标数组的首地址,第二个参数source是拷贝的源头数组的首地址,返回值也是目标数组的首地址。 也就是将source数组中的字符拷贝到destination中,并返回destination的首地址。

使用方法与使用效果如下:

 

 

 

        接下来进行模拟实现:

        ③ strcat

        先看函数原型。

 

        这个函数的作用是用来 进行字符串的连接。是将source中的字符串连接到destination的后面,并返回destination的首地址。

使用方法与使用效果如下:

 

 

        接下来进行模拟实现:

 

        ④strcmp

先看函数原型。

        

这个函数的作用是进行字符串的比较。str1和str2分别是两个字符数组的首地址。

 

工作原理

 使用方法与使用效果如下:

 

 

        接下来进行函数模拟:

        ⑤strstr

        先看函数原型。

      

        这个函数的作用是用来寻找子字符串。也就是在str1中寻找str2的子串,如果找到,就返回第一次找到子串的地址,如果找不到就返回空指针。 

使用方法与使用效果如下:

 

 

接下来是模拟实现。

(PS因为我还没有学习kmp算法,所以这个函数我就用了BF算法实现,以后会加以改进)


二.内存函数 

 

        学习了上面的函数,会发现这些函数的弊端,也就是都要寻找'\0',因此这些函数不能应用于其他的数组,所以就得引入下面的内存函数。

①memcpy

        先看函数原型。

         这个函数与strcpy的作用差不多,它的作用是对内存进行拷贝。也就是将source中的num个字节拷贝到destination中,最后返回destination的首地址。这里为什么是用void*呢?因为用void*这个函数就可以适用于任何的数据拷贝,只需要强制类型转化就可以了。

使用方法与使用效果如下:

 

 

接下来进行模拟实现:

 

②memmove

引入这个函数前我们先用我们写的my_memcpy进行一个操作。

 

执行了之后我们并没有得到我们需要的数组这是为什么呢?

 

 

 

 

 正是基于这样的原理,我们改进一下我们的my_memcpy函数。

为了方便呢,c语言也有一个实现这样功能的函数也就是memmove

先看函数原型

 

函数的作用也就是实现同一个数组或者不同数组之间的内存拷贝。也就是将source中的内容移动(拷贝)到destination中。

使用方法与memcpy一模一样,只是多了一个在同一数组中拷贝的功能。

 使用方法与使用效果如下:

三.结语

这些库函数的介绍今天就告一段落了,在进一步的学习后会对字符串和内存函数进行补充介绍,感谢大家的浏览。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值