1. 字符分类函数
2. 字符转换函数
3. strlen的使用和模拟实现
4. strcpy的使用和模拟实现
5. strcat的使用和模拟实现
6. strcmp的使用和模拟实现
7. strncpy函数的使用
8. strncat函数的使用
9. strncmp函数的使用
10. strstr的使用和模拟实现
11. strtok函数的使用
12. strerror函数的使用
1. 字符分类函数
C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。
这些函数的使⽤都需要包含⼀个头⽂件是 <ctype.h>
islower 是能够判断参数部分的 c 是否是小写字母的。 通过返回值来说明是否是小写字⺟,如果是⼩写字母就返回⾮0的整数,如果不是小写字母,则返回 0。
练习:
写 ⼀个代码,将字符串中的小写字母转⼤写,其他字符不变。
-=32是因为大写字母和小写字母的ASCLL值差32。
2. 字符转换函数
可以使用tolower 函数
3. strlen的使用和模拟实现
格式(求个数)
注意:
1.字符串以 '\0' 作为结束标志 ,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包 ‘\0' )
2.参数指向的字符串必须要以 '\0' 结束。
3. 注意函数的返回值为size_t,是无符号的
4.strlen的使用需要包含头文件
strlen的模拟实现:
1.
2.
3.
4. strcpy 的使用和模拟实现
格式:(复制)
注:
1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷⻉到⽬标空间。
3.⽬标空间必须⾜够⼤,以确保能存放源字符串。
4.⽬标空间必须可修改。
错误示范:
因为找不到\0,
arr2的存放位置太小 放不下arr1里的内容。
strcpy的模拟实现:
arr2对应dest;arr1对应src。
求字符串长度:
5. strcat 的使用和模拟实现
格式:(添加)
注:
1.源字符串必须以 '\0' 结束。
2.目标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
3.目标空间必须有足够的⼤,能容纳下源字符串的内容。
4.目标空间必须可修改。
模拟实现strcat函数:
6. strcmp的使用和模拟实现
格式:(比较大小)
1.第⼀个字符串⼤于第⼆个字符串,则返回大于0的数字 ◦
2.第⼀个字符串等于第⼆个字符串,则返回0 ◦
3.第⼀个字符串⼩于第⼆个字符串,则返回小于0的数字 ◦
那么如何判断两个字符串?比较两个字符串中对应位置上字符ASCII码值的大小
strcmp函数的模拟实现:
7. strncpy 函数的使用
格式(可以选择复制几个字符)
对比strcpy与strncpy
8. strncat 函数的使用
格式:(可以选择添加几个字符)
1.将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 符 \0 字符
2.如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加destination指向的字符串末尾
对比:strcat和strncat
9. strncmp函数的使用
格式:(选择字符比较大小)
对比
strcmp和strncmp
10. strstr 的使用和模拟实现
格式:(在一个字符找出一个子字符,找第一次出现的位置)
注:
1.函数返回字符串str2在字符串str1中第⼀次出现的位置
2.字符串的比较匹配不包含 \0 字符,以 \0 作为结束标志
strstr的模拟实现:
11. strtok函数的使用
格式(分隔符)
注:
1.sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合 •
2.第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标 记。
3. strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容 并且可修改。)
4.strtok函数的第⼀个参数不为 NULL,函数将找到str中第⼀个标记,strtok函数将保存它在字符串中的位置 •
5.strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标 记。
6.如果字符串中不存在更多的标记,则返回 NULL 指针
12. strerror 函数的使用
格式:
注意:
strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。一般包含头文件errno.h。
0:没有错
1:操作被拒绝了
2:没有这个文件或文件夹
3:没有这个进程
4:函数调用被打断
5:输入输出错误
6:没有这个设备或地址
7:列表太长
8:执行格式错误
9:无效的文件描述符
10:没有子进程
举例: