字符函数和字符串函数

目录

前言

函数目录

求字符串长度

长度不受限制的字符串函数

长度受限制的字符串函数介绍

字符串查找

错误信息报告

函数介绍

strlen

作用:

函数的使用

strlen函数注意事项

strlen模拟实现 

 strcpy

作用:

函数的使用

strcpy模拟实现

assert简单介绍

strcpy函数注意事项

strcat

 作用:

strcat函数注意事项

strcat模拟实现

strcmp

作用:

函数使用效果:

strcmp模拟实现

strncpy

作用:

效果如下:

strncpy模拟实现

strncat

作用:

 strncmp

作用:

 strncmp模拟实现

strstr

作用:

代码实现

前言

本文主要介绍处理字符和字符串的库函数的使用和注意事项

及模拟实现各函数

函数目录

  • 求字符串长度

  1. strlen
  • 长度不受限制的字符串函数

  1. strcpy
  2. strcat
  3. strcmp
  • 长度受限制的字符串函数介绍

  1. strncpy
  2. strncat
  3. strncmp
  • 字符串查找

  1. strstr
  2. strtok
  • 错误信息报告

  1. strerror

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串中或者字符数组 中。 字符串常量适用于那些对它不做修改的字符串函数。

函数介绍

strlen

作用:

求字符串长度

 上图是MSDN上关于strlen的相关信息,首先我们可以看出函数返回类型为size_t也就是无符号类型,并且是函数是传的字符串的地址。

函数的使用

strlen函数注意事项

strlen模拟实现 

 

 strcpy

作用:

将源字符串拷贝到目标字符串中去

 从图中可以看出strcpy的作用就是拷贝字符串,调用strcpy时要引头文件<string.h>,函数传参类型都是char*,而源字符串那加上const因为源字符串不需要改变,加上const增加代码的健壮性。然后函数的返回类型也是char*

函数的使用

 这样无法确切的看出函数的返回值、返回类型,所以我迷你实现了一下strcpy

strcpy模拟实现

assert简单介绍

 可能有的同学不知道这个是什么,我给大家说一下,assert简称断言,作用就是检查函数传递过来的指针是否合法,是否为空,要是为空指针或者不合法就会报错,程序在这里就直接挂掉了,相当于给代码加了一层保障。

strcpy函数注意事项

  1. 源字符串必须以 ‘\0’结束
  2. 会将源字符串中的 ‘\0’ 拷贝到字符串
  3. 目标空间必须足够大,以确保能存放源字符串
  4. 目标空间必须可变

strcat

 作用:

 将源字符串追加到目标字符串后面

效果如下:

 

 和strcpy类似,strcat也是差不多的函数设置

strcat函数注意事项

  1. 源字符串必须以 ‘\0’结束
  2. 目标空间必须可修改
  3. 目标空间必须足够大,以确保能存放源字符串

strcat模拟实现

 

strcmp

作用:

比较两个字符串

看看MSDN上对于strcmp的描述

要是字符串1比字符串2小那么返回一个  <0  的数

要是字符串1比字符串2大那么返回一个  >0  的数

要是字符串1和字符串2一样大那么返回   0

strcmp函数比较的是字符串对应位置上字符的ASCII码值

函数使用效果:

 对照上图代码,可以发现str1与str2第三个字符分别为cd,而c与d相比c的ASCII的要小,所以返回了一个小于0的数-1。
 

strcmp模拟实现

 因为str1第三个字符c小于str2第三个字符d,所以输出  < 

strncpy

作用:

 拷贝count个字符从源字符串到目标字符串中去

效果如下:

 可以看到因为我传的count为3,所以strncpy把str2的前三个字符ijk拷贝到了str1的前三个字符abc上去,并且把abc三个字符覆盖掉了,然后打印出来。

但是如果源字符串没有你想要拷贝数那么多的字符数就会在内存中把其置为  '\0' ,我们看到的就是多的被置为了0。举例如下:

通过监视我们可以看到因为str2只有三个字符,所以下标为3和4的位置被置为了 '\0'

 

 size_t是无符号的数

strncpy模拟实现

 

strncat

作用:

与strcat一样都是追加字符串

 看了代码再来看一下基本语法:

 strncmp

作用:

与strcmp一样都是比较字符串的大小,但是strncmp可以指定比较字符串中比较多少个

 返回值都和strcmp的规则一样,就是多了一个参数count

 

代码实现如下:

 strncmp模拟实现

 

strstr

作用:

找一个字符串中是否存在名一个字符串,也就是子串,类似于数学上的找子集

 

 上图大意是:函数返回一个指向主字符串在子串中首次出现的指针,如果子串没有在主串中出现的话返回NULL,如果子串指向长度为0 的字符串,则函数返回主串。

代码实现

 

  • 41
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

即将秃头的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值