目录
1. C语言字符串
2. 字符串长度-strlen
返回的是无符号数
注意:两个无符号数相减一定是无符号数
模拟实现:
3. 字符串拷贝-strcpy
注意:
- 源字符串必须以 '\0' 结束
- 拷贝目标的空间必须足够大,确保能存放源字符
- 目标空间必须可以修改,char* arr = "abc" ;例如这种写法是常量字符串,不可修改
模拟实现:
4. 字符串追加-strcat
注意:
- 源字符串必须以 '\0' 结束
- 拷贝目标的空间必须足够大,确保能存放源字符
- 不能自己追加自己:因为源 \0 会被覆盖,已经被修改掉了,那就会一直追加,永远找不到 \0 ,会导致死循环
模拟实现:
5. 字符串比较-strcmp
关于返回值的规定:
注意:
- 这里比较的是单个字符,一个字符一个字符的比较
- 返回大于0,或者小于0,不是 +1或者 -1
模拟实现:
1. 返回:大于是+1,小于是-1
2. 返回:大于是大于0的数,小于是小于0的数
6. 长度受限制的字符串函数
6.1 strncpy
注意:
- 只会拷贝,不作其他的操作
- 如果拷贝的个数大于源字符,会用0补齐
6.2 strncat
注意:
- 这里不管拷贝几个,都是在后面追加 \0
- 从目标的 \0 开始追加
6.3 strncmp
和 strcmp 一样,只是比较个数是不是全部比较的问题
7. 字符串查找-strstr
注意:
- 返回的是目标字符串的地址
- 如果子串多次出现,那么返回第一次出现的地址
- 查找不到,返回空指针 NULL
模拟实现:
8. 字符串分隔-strtok
注意:
- 找到指定标记后,会将标记改为 \0,并将前面的字符串返回
- strtok 会改变源字符串,所以一般将源字符串拷贝一份
- 接着继续下一次查找的话,目标要传递NULL,表示从上一次查找后,从上次被修改为 \0 的位置接着查找
循环写法:
9. 字符串错误码-strerror
- 将错误码,翻译成错误信息
但是程序运行的时候,错误码(1 2 3)不是人为给定的,是由errno指定
errno是一个全局的错误变量,当C语言库函数在执行过程中,如果发生了错误,就会把错误码赋值到errno当中。需要头文件 errno.h
通过strerror查看errno错误码对应的错误信息
错误码---错误信息
10. 其他字符串函数
- toupper------>转大写
- tolower------>转小写
需要头文件 ctype.h
大小写转换
转换字符串: