字符函数和字符串函数

目录

一.字符分类函数

二.字符转换函数 

三. strlen 的使用和模拟实现 

3.1 函数定义

3.2 使用示例

3.3 模拟实现 

四. strcpy 的使用和模拟实现 

4.1 函数定义 

4.2 使用示例 

4.3 模拟实现 

五. strcat 的使用和模拟实现 

5.1 函数定义

5.2 使用示例 

5.3 模拟实现 

六. strcmp 的使用和模拟实现  

         6.1 函数定义

6.2 使用示例 

6.3 模拟实现 

七. strncpy 的使用和模拟实现

7.1 函数定义

7.2 使用示例 

7.3 模拟实现 

八. strncat 的使用和模拟实现 

         8.1 函数定义

8.2 使用示例 

8.3 模拟实现 

九. strncmp 的使用和模拟实现 

9.1 函数定义

9.2 使用示例 

9.3 模拟实现 

十. strstr 的使用和模拟实现  

10.1 函数定义

10.2 使用示例 

10.3 模拟实现 

后记 


 

一.字符分类函数

C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。 这些函数的使用都需要包含⼀个头文件是 ctype.h

7ff249f9af874c149b6a22650b9c16c6.png

该类函数的使用比较简单,参数符合条件就返回真。 

下面我们举例其中的一个函数islower,其余函数的使用也类似。 

在C语言中,islower函数是一个标准库函数,用于检查给定的字符是否是小写字母。这个函数定义在头文件<ctype.h>中。如果传入的字符是小写字母('a'到'z'),则islower函数返回非零值(通常为1);如果不是小写字母,则返回0。

下面是一个使用islower函数的简单示例:

b1e7aaa384b64ef7906ff549b3391592.png 

下面我们来用上述字符分类函数来完成一个练习:

写⼀个代码,将字符串中的小写字母转大写,其他字符不变。 

 b80038c945274af1a14c8b71dd8ae966.png

二.字符转换函数 

C语言提供了2个字符转换函数: 

61f10595375141fca7d2543e31d24cff.png 

上面的代码,我们将小写转大写,是-32完成的效果,有了转换函数,就可以直接使用 toupper 函 数。 

2ea58d35a3d8471b9328c6b793f6c67a.png 

三. strlen 的使用和模拟实现 

3.1 函数定义

strlen函数是 C 语言标准库中的一个函数,用于计算给定字符串的长度,但不包括终止的空字符('\0')。这个函数定义在 <string.h> 头文件中,因此在使用之前需要包含这个头文件。

 7a5377b1534a4dabbdca0149f961f1e1.png

 str:指向以空字符('\0')结尾的字符串的指针。

返回值: 回字符串的长度,不包括终止的空字符。返回值类型为 size_t,这是一个无符号整数类型,能够表示对象的大小。

3.2 使用示例

22228854bce848709dc8c683069a49f4.png 

在这个例子中,strlen(str) 会计算字符串 "Hello, World!" 的长度,不包括末尾的空字符'\0',并返回长度值 13。然后,这个长度值通过 printf 函数输出。 

3.3 模拟实现 

迭代的写法

1730750d538645abb56f80361fada785.png 

递归的写法

e825f6f6af5546c3b890772e1b1fe220.png 

四. strcpy 的使用和模拟实现 

4.1 函数定义 

strcpy 函数是 C 语言标准库中的一个函数,用于复制字符串它将源字符串(包括终止的空字符 '\0')复制到目标字符串数组中。这个函数定义在 <string.h> 头文件中,因此在使用之前需要包含这个头文件。

da7703a8069a4cfdad5ad2d7252de996.png 

dest:指向用于存储复制内容的目标数组。 

 str:指向要复制的源字符串。

返回值:返回目标字符串的指针(即dest的值)。

4.2 使用示例 

bd9c4a7f3ccf48878b45fff9066f7be9.png

 在这个例子中,strcpy(dest, src); 会将 "Hello, World!"(包括终止的空字符)从 src 复制到 dest 中。然后,通过 printf 函数输出复制后的字符串。

4.3 模拟实现 

37ff7ba642894d95901484afee57c764.png 

五. strcat 的使用和模拟实现 

5.1 函数定义

strcat 函数是 C 语言标准库中的一个函数,用于将两个字符串连接起来。它将源字符串(src)的内容追加到目标字符串(dest)的末尾,并包括源字符串的终止空字符('\0')。这个函数定义在 <string.h> 头文件中,因此在使用之前需要包含这个头文件。 

cb6a31e0bf6e4568b101ad565f1171e1.png 

dest:指向目标字符串的指针,该字符串必须有足够的空间来保存两个字符串连接后的结果。 

str:指向要追加到目标字符串末尾的源字符串。 

返回值: 返回目标字符串的指针(即 dest 的值)。

5.2 使用示例 

5d9d05d2ff8549dd8d467f3b0f705c32.png 

在这个例子中,strcat(dest, src); 会将 "World!" 追加到 "Hello, " 的末尾,包括其终止的空字符。然后,通过 printf 函数输出连接后的字符串 "Hello, World!"。 

  5.3 模拟实现 

9316f9504c904dc6b5d5927fcdd8c2d0.png 

六. strcmp 的使用和模拟实现  

 6.1 函数定义

strcmp函数是 C 语言标准库中的一个非常有用的函数,用于比较两个字符串。它的全名是 "string compare",即字符串比较。这个函数通过比较两个字符串的字符,来确定这两个字符串在字典序上的大小关系。

ad12085b9acb4dcf98998d19f75ee728.png 

str1:指向第一个要比较的字符串的指针。

str2:指向第二个要比较的字符串的指针。

返回值

如果 str1 和 str2 字符串相等,则返回 0

如果 str1 在字典序上小于 str2,则返回一个小于 0 的值(通常是 -1,但具体值依赖于实现)。

如果 str1 在字典序上大于 str2,则返回一个大于 0 的值(通常是 1,但具体值也依赖于实现)。

6.2 使用示例 

 9e8b94a0242542128ac0d0a81eb07740.png

   6.3 模拟实现 

 980dcbb9ed2b482fb84d58068eecc1e8.png

七. strncpy 的使用和模拟实现

 7.1 函数定义

strncpy 函数是 C 语言标准库中的一个函数,用于复制字符串,但与其他字符串复制函数(如 strcpy)不同,strncpy 会限制复制的字符数,这有助于防止缓冲区溢出。它在 <string.h> 头文件中定义。 

b76b25a2fa454f338614df19f24f2b08.png 

dest:指向目标数组(即要复制到的字符串)的指针。

src:指向源字符串(即要复制的字符串)的指针。

n:要复制的字符的最大数量。注意,这包括结尾的空字符(如果源字符串中的字符数少于 n,且源字符串以空字符结尾,则会在目标字符串中保留这个空字符;否则,目标字符串不会自动以空字符结尾)。 

返回值strncpy 函数返回 dest 的指针。

7.2 使用示例 

02cbccae0dba468085fee71fa35157eb.png

  7.3 模拟实现 

12de4be35e7c4bfd8c035e854900ee6e.png

八. strncat 的使用和模拟实现 

  8.1 函数定义

strncat 函数是 C 语言标准库中的一个函数,用于将一个字符串(源字符串)的前 n 个字符追加到另一个字符串(目标字符串)的末尾。这个函数与 strn cat 函数相似,但 strncat 允许你指定要追加的最大字符数,这有助于防止缓冲区溢出等安全问题。

函数原型定义在 <string.h> 头文件中,如下所示:

45bf5b3f059c45919c3889143f53c543.png 

 dest:指向目标字符串的指针,即你想要追加内容的字符串。

src:指向源字符串的指针,即你想要追加的字符串。

n:指定从源字符串中最多追加多少个字符到目标字符串中。注意,这个数量不包括终止的空字符('\0'),但函数会确保在追加完 n 个字符后,目标字符串以空字符结尾。

返回值:strncat 函数返回指向目标字符串(dest)的指针。

 8.2 使用示例 

384ace08bd8b4219b73a26ecf3c7a71f.png 

   8.3 模拟实现 

d49b7eceef7c45c4abd1108913d44db4.png 

九. strncmp 的使用和模拟实现 

 9.1 函数定义

strncmp 函数是 C 语言标准库中的一个非常有用的函数,用于比较两个字符串的前 n 个字符。这个函数通过比较两个字符串指定长度的字符序列,来确定这两个字符串在字典序上的大小关系,但它不会检查整个字符串,而是只比较前 n 个字符。这在某些情况下特别有用,比如当你只需要比较字符串的前缀时。 

 在 <string.h> 头文件中,strncmp 函数的原型定义如下:

3a11e4353ac54cd5946d9ca37e95534c.png 

str1:指向第一个要比较的字符串的指针。

str2:指向第二个要比较的字符串的指针。

n: 要比较的最大字符数。

返回值: 

如果 str1 和 str2 的前 n 个字符完全相同,则返回 0

如果在比较的前 n 个字符中,str1 的某个字符在字典序上小于 str2 中对应位置的字符,则返回一个小于 0 的值(通常是 -1,但具体值依赖于实现)。

如果在比较的前 n 个字符中,str1 的某个字符在字典序上大于 str2 中对应位置的字符,则返回一个大于 0 的值(通常是 1,但具体值也依赖于实现)。

  9.2 使用示例 

9ab2a1de46544eb3a6676dad6dedb74f.png

  9.3 模拟实现 

7e22048f573444eebc4f267b1773adb5.png

十. strstr 的使用和模拟实现  

  10.1 函数定义

strstr 函数是 C 语言标准库中的一个函数,用于在一个字符串中查找第一次出现另一个字符串的位置。如果找到了指定的子字符串,strstr 会返回一个指向该子字符串首次出现位置的指针;如果没有找到,则返回 NULL

函数原型定义在 <string.h> 头文件中,如下所示:

55f1634a275f4a60a56b27bf5da28b05.png 

 str:是要搜索的原始字符串。

substr:是要在 str 中查找的子字符串。

工作原理

strstr 函数从 str 的开头开始,逐个字符地搜索 substr。如果找到了 substr 的完整序列(即 substr 中的每个字符都按顺序出现在 str 中),则函数返回一个指向 str 中 substr 首次出现位置的指针。如果 str 中不包含 substr,则返回 NULL

 10.2 使用示例 

e9c44b7383e04b9e964ad7ea11d2fc96.png 

  10.3 模拟实现 

a295186b0289481996f2f8a384d54414.png 

后记 

怎么就快开学了呢?啥都没干呢

喜欢的小伙伴们点点赞,点点关注哈,谢谢各位大佬们!

共勉!!! 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值