字符分类函数ctype.h
会就islow(小写),toupper(转化为大写)举例
例如
if (islower(c))
c-=32; 就可以实现toupper的功能啦
字符转化函数
if (islower(c))
c=toupper(c);
头文件string.h
strlen(\0前长度)
字符串以\0作为结束标志,strlen函数返回的是在\0前面出现的字符个数,不包括\0
一种常见错误:
模拟实现
传入先断言assert(str)
1.计数器方式
2.递归//不创建临时变量
3.指针-指针(保留初始)
保留初始,后用++指针减初始
strcpy 拷贝
string copy
char* strcpy(char* arr1,constc char* arr2)
将arr2拷给arr1
模拟实现
数组名是地址,常量值
strcat 追加
strcat(arr1,arr2)
将2追加到1的后面
模拟实现
模拟实现无法自我追加
strcmp 比较大小
因为数组名==首地址//常量字符串名==首字符地址
所以无法直接比较,要借助函数了
应用:按照首字母排序
模拟实现
通过循环遍历两个字符串中的字符,并在遇到不相等字符或者其中一个字符串的结尾时结束循环
实践:
解释:
通过循环遍历两个字符串中的字符,并在遇到不相等字符或者其中一个字符串的结尾时结束循环
实践:
解释:
while (*str1 == *str2)
: 这是一个while
循环,它会在str1
指向的字符和str2
指向的字符相等时执行。循环会一直执行直到遇到不相等的字符或者其中一个字符串的结尾。if (*str1 == '\0')
: 在循环内部,这个if
语句用于检查str1
指向的字符是否为字符串的结尾符号\0
,即判断是否到达了字符串的末尾。如果str1
的当前字符是字符串结尾符号,那么说明两个字符串相等,函数返回0。str1++; str2++;
: 在循环内部,这两行代码用于将指针str1
和str2
分别向后移动一个位置,指向下一个字符,以便进行下一轮的比较。return *str1 - *str2;
: 如果循环结束时两个指针指向的字符不相等,那么函数会返回这两个字符的ASCII码之差。这样可以实现按照字典顺序比较字符串。
strn函数 长度受限
相对安全
strncpy
源字符串长度小于num时,在后面追加0,直到num个
strncat
小于num时,只追加到\0
strncmp
最多比较num个,提前发现不一样就提前结束
strstr 返回出现位置
返回2在1中第一次出现的位置,2要和1中某一块完全相等
模拟实现
所以存在两个循环,三个初始化保留数据,好用于返回的量
while(==),循环条件,为0跳出
——> !0 为0执行
strtok 切分字符串(for进阶)
例如:tiantiankaixin.xiaom@jiayou
实现切分后:tiantiankaixin xiaom jiayou
str: 需要分割的字符串
sep:分隔符集合
函数返回:结尾将其用\0标记,返回分隔符前字符串指针
(函数会改变被操作字符串,所以切分的多为临时拷贝的内容)
准则:
如果字符串中不存在更多的标记,则返回NULL指针
运行
头文件 erron.h
strerror 翻译错误
作用:把发生错误自动生成的错误码,翻译为错误信息
0~10之间的错误消息
perror 打印错误
perror=printf+strerror //不用%s
关于0的几种理解
0--数字0
‘0’--字符0--ascii=48
NULL--空指针--0
‘\0’--字符--ascii=0
" "--空字符串
//有用的话 点赞支持一下叭 感谢~