当前位置:   article > 正文

【C】字符串函数——大全(简洁,精炼,初学者)

字符串函数

 前言:大家好,这里是YY;此篇博客主要是字符串函数的知识点包含C语言对字符和字符串的处理】【strlen】【strcpy】【stract】【strcmp】【strcpy,strcmp,strcat与strncpy,strncmp,strncat比较】【strncpy】【strncmp】【strncat】【strstr】【strtok】【strerror】【perror】【字符分类函数】【字符转化函数

PS:创作不易,每个知识点都有例题或者图帮助理解;如果对你有帮助,希望能够得到您的关注,赞,收藏,谢谢!  

目录

一.C语言对字符和字符串的处理

1.字符串函数的头文件 

二.strlen(字符长度函数)

1.模拟实现strlen

三.strcpy(字符拷贝函数)

1.strcpy的2种特性

一.strcpy会拷贝"\0"

二.能越界访问,但报错

2.场景:拷贝放到常量字符串

3.模拟实现strcpy

四.stract(字符追加函数)

1.模拟实现strcat

2.(特性实例)情景1:能否实现自己追加自己?NO

五.strcmp(字符比较函数)

1.模拟实现strcmp

六.strcpy,strcmp,strcat与strncpy,strncmp,strncat比较

七.strncpy

一:情景:strncpy遇到过分拷贝时的运作

八.strncmp

九.strncat

一:情景: "自己追加自己"可行

十.strstr(在一个字符串中查找另一个字符串是否存在)

1.模拟实现strstr

十一.strtok(字符串分解为数组字符串)

综述: 

使用要点:

十二.strerror(翻译错误码)

十三.perror(显示函数错误原因)

十四.字符分类函数

1.字符分类函数的头文件

2.字符分类函数总览 

一.演示用例:isdigit函数(判断是否为数字字符)

十五.字符转化函数(大小写英文字符转换)

1.字符转化函数的头文件

2.字符转化函数总览

一: 运用场景:把字符串中的小写转成大写


一.C语言对字符和字符串的处理

C语言中对字符和字符串的处理很是频繁,但是C语言本身并没有字符串类型,字符串通常放在常量字符串或者字符数组中。

PS:字符串常量适用于那些对它不做修改的字符串函数

常量字符串: 

"hello my friend! \0"//默认后面会有\0

字符数组:

char arr[]="welcome to my blog! \0";//默认后面会有\0

1.字符串函数的头文件 

#include<string.h>

二.strlen(字符长度函数)

  

特性:

  • strlen的返回类型是unsigned int
  • 无符号数-无符号数还是无符号数

使用场景:

 


1.模拟实现strlen

原理:指针-指针

注意点:const修饰的指针到另一个指针时,也应该受保护(+const) 

  


三.strcpy(字符拷贝函数)

 注意:返回类型为char*打印时可以接受其返回值

使用场景: 


1.strcpy的2种特性


一.strcpy会拷贝"\0"

如果不拷贝\0会报错(越界)

 


二.能越界访问,但报错

虽然能成功拷贝,但仍然会报错(要保证目标空间足够大·)


2.场景:拷贝放到常量字符串

前提条件:(目标指针指向的空间必须可修改


3.模拟实现strcpy

原理:逐个改变目的地的地址,即指针(地址)覆盖


四.stract(字符追加函数)

PS:与strcpy类似,参数部分都是前目的地后源

使用场景:

特性:

  • 追加字符串时,源字符串必须有\0

  • 会覆盖待追加代码的\0(从第一个\0处开始追加)


1.模拟实现strcat

比模拟实现strcpy多了一步:设置cur指针,重新找拼接的头指针(覆盖掉源代码的\0)


2.(特性实例)情景1:能否实现自己追加自己?NO

分析:

  • stract的特性之一就是会覆盖待追加代码的"\0"


五.strcmp(字符比较函数)

注意点:

  • 比较对应位置上字符的Ascall值的大小

  • 一定要有‘\0’,即终止符号

  • 与字符串的长短无关 !!!!!!!!!!!!

使用场景: 


1.模拟实现strcmp

原理:逐字符比较


六.strcpy,strcmp,strcat与strncpy,strncmp,strncat比较

直观区别:

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

PS:strncpy,strncat不仅是长度受限与否的区别,还有特性上的区别 


七.strncpy

应用场景:


一:情景:strncpy遇到过分拷贝时的运作

strncpy特性:不够拷贝的部分,补上" \0"


八.strncmp

运用场景:


九.strncat

PS:与strcmp对比,解决了无法自己追加自己的问题 

 特性:

  •  strncat追加的字符串后面还是有\0
  • 追加的个数n,不包含\0


一:情景: "自己追加自己"可行

原理:

strncat追加的字符串后面还是有\0,---解决了\0被覆盖从而无法读取的情况

 运用场景:


十.strstr(在一个字符串中查找另一个字符串是否存在)

返回值的情况:

  • 存在:返回子串第一次出现的位置
  • 不存在: 返回NULL

使用场景:


1.模拟实现strstr

原理:分别设置两个比对指针s1,s2,设置一个指针p记录开始匹配的位置

代码实现:


十一.strtok(字符串分解为数组字符串)

PS: str 为待分解字符串,delim 为分隔符(也为字符串


综述: 

返回值: 

  • 该函数返回被分解第一个子字符串
  • 如果没有可检索的字符串,则返回一个空指针(str!NULL即可控制循环)

使用要点:

  • 存储分割符的字符串p,分割一次后会自动跳到下一个字符
  • strtok有记忆功能,会记住他改变的地址
  • 第一次如果传回非空,则第二次一定要传回NULL!!!!!!!!!!!!!

第一次传入非空,将会从str中找到第一个分隔符处的位置,并记忆第二次传入NULL,是为了确保函数从第一次操作中记忆的位置再次开始运行,寻找下一个标记

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<ctype.h>
  4. #include<string.h>
  5. int main()
  6. {
  7. char arr[] = "yy@qq.com";
  8. char buf[200] = { 0 };
  9. strcpy(buf, arr);
  10. const char* p = "@.";
  11. char* str = NULL;
  12. //第一次传入buf为非空,则接下来在此循环一定要传入NULL
  13. for (str = strtok(buf, p); str != NULL; str = strtok(NULL, p))
  14. {
  15. printf("%s\n", str);
  16. }
  17. return 0;
  18. }
  19. 输出结果:
  20. yy
  21. qq
  22. com

十二.strerror(翻译错误码)

   

 错误码:0,1,2,3,4(C语言中库函数报错时的错误码

功能:接收错误码并把错误码转换成错误信息 

 PS:errno是c语言提供的全局的错误变量,当调用时,错误码就会存进去

应用场景:

 


十三.perror(显示函数错误原因)

要点:

  • 相当于printf与strerror的结合

  • 可以加入自定义内容

使用场景: 


十四.字符分类函数


1.字符分类函数的头文件

#include<ctype.h>

2.字符分类函数总览 


一.演示用例:isdigit函数(判断是否为数字字符)

 返回值:非数字字符返回0;数字字符返回非0;

使用场景:


十五.字符转化函数(大小写英文字符转换)

1.字符转化函数的头文件

#include<ctype.h>

2.字符转化函数总览

返回值: 

  • toupper;返回转换后的大写字母,若不须转换则将参数c值返回
  • tolower;返回转换后的小写字母,若不须转换则将参数c值返回

运用场景: 


一: 运用场景:把字符串中的小写转成大写

  1. int main()
  2. {
  3. char arr[] = "Hello";
  4. char* p = arr;
  5. while (*p++)
  6. {
  7. //把所有字符先变成小写,再变成大写
  8. if (islower(*p))
  9. {
  10. *p = toupper(*p);
  11. }
  12. }
  13. printf("%s", arr);
  14. return 0;
  15. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/71480
推荐阅读
相关标签
  

闽ICP备14008679号