C语言————一些库函数的模仿实现(1)

本文详细介绍了C语言中的strlen(),strcmp(),strncmp(),和strcpy()字符串处理函数,以及它们与sizeof()函数在计算字符串长度方面的差异。重点强调了结束符0在函数计算中的作用以及注意事项。
摘要由CSDN通过智能技术生成

1.strlen()函数:

用法形式:

         strlen(str);

首先,先来看看官方介绍:

  9d68397a6f984acaa65f22bef15ba477.png

解析:

      strlen()函数是一个专门用于求取字符串长度的函数,调用时需要包含头文件<string.h>。。

用法:

 

模拟实现:

dcc5e398d9c147c79fdceea8d632d349.png

 

注意---与库函数sizeof()的区分:

          本质上sizeof()是一种单目运算符,可以用于求取操作数存储空间的大小,它可以计算数据类型、变量或函数等所占用的内存空间大小(单位是字节),同样也可以计算字符串的长度,而库函数strlen()是一个由C标准库提供的函数,专门用于计算字符串的长度(单位是字节)。那它们又有什么区别呢?

        首先,我们需要了解一下电脑是如何结束数据读取的。电脑是直性子,在数据被读取完成后,需要通过结束符 '\0' 来提示电脑结束读取,而在我们每次创建操作数时系统都将自动的在其后添加上结束符' \0 ' ,以便在合适的位置结束读取。

ade8a6fb47e44f9aa2a0aa799bd44fb9.png

 

            同样,我们也可以手动控制读取的结束位置。

392a05ed55c54f30a9e658e1b4d6076f.png

        对了,回到对它们的区分上,其实,sizeof()和 strlen() 的区别就在这个结束符' \0 '上,因为    sizeof()计算的是操作数所有储存空间的大小, 我们的结束符' \0 ' 同样也需占据储存空间(一个字节),而我们的库函数 strlen() 就更加“智慧”点 ,只会计算结束符' \0 '之前的长度大小。

f4eb3ee9b1e845568bb9bae85a5e08a7.png

       总的来说,sizeof()是一种单目运算符,计算的是操作数所有储存空间的大小,而strlen()是一个库函数,计算的是在结束符' \0 '之前的储存空间大小。      这样对同样的字符串计算长度时,单目运算符sizeof()计算的值 就会比strlen()库函数大1。

   2.strcmp()函数:

 用法形式:

       strcmp(str1,str2);

官方(cplusplus.com)介绍:

2ede0a9839ac496ca247f75f02efa1bf.png     strcmp() 函数用于对比俩字符串大小(也就是对比俩字符串里相对应的字符的ASCLL码值)。

      若str1和str2完全相同,则返回0;若str1在和str2相对应的某个字符的ASCLL码更大 ,则返回一个大于零的数;若str1在和str2相对应的某个字符的ASCLL码更小 ,则返回一个小于零的数。

注意:调用时需要包含头文件<string.h>。

(1)相同时

f8ce1ca7c1594921ae6c47d390b8b698.png

 

(2)str1大于str2时

(  A的ASCLL码大于a的ASCLL  )

4d80e4f33a464700bf64cdbcfa489a8d.png

 

(3) str1小于str2时

(  A的ASCLL码小于a的ASCLL  )f9df972526914f68a211b46db1df8b78.png

注意:strcmp()库函数的调用需要包含头文件<string.h>。

      模拟实现:

09568b4a44ba45d89d0ffc312aff17b7.png

 注意:其中asset()库函数是用来判断所给值是否为空(NULL),如果为空则系统报错。

            调用assert()库函数时需要包含头文件<assert.h>。

 

3.strncmp函数

      官方介绍:

ebb8d8c801b24993bf359f38ea5c1aaa.jpg

 用法:

          strcmp(str1,str2);

用法解析:

             strncmp()库函数是strcmp()库函数的进阶版,用法类似,不同的是 strncmp ()库函数比strcmp()库函数多了个n,而他们的不同就提现在这个n上,strncmp()中的n,可以理解为数量。

           总的来说,就是将C字符串str1的num字符与C字符串str2的num个字符进行比较。

注意:

         调用时需要包含头文件<string.h>,同时 ,这个函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续执行以下对,直到字符不同,直到到达终止空字符,或直到两个字符串中的num字符匹配,以先发生者为准。

模拟实现:

de70b8c5d19c41099b888aa97fc327df.png

 

4.strcpy()函数

官方介绍:

9e6d5ebf5b644370808ec206330f7578.jpg

    用法:

    strcpy(str1,str2);

    解析:

     strcpy()库函数的功能是将源指向的C字符串(str2)复制到目标指向的数组(str1)中,包括终止空字符(并在该点停止)。

     注意:
           为了避免溢出,目标指向的数组的大小必须足够长,以包含与源相同的C字符串(包括终止空字符),并且不应该与源在内存中重叠。

            调用时需要包含头文件<string.h>。

模拟实现:

f3a51b1245a74d788f9192a5e092d780.jpg

 

 

 

未完待续……(^~^)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值