1.常见的字符串操作函数
2.strlen
strlen是计算字符串长度的库函数,在计算长度时不会加上 '\0',也就是 '\0'并不是字符串长度的一部分。
还需要注意的是这个库函数的返回值是一个无符号的整数(unsigned int)
进行以下操作会发生歧义
我们认为if是假的,因为str1长度小于str2,但是实际上,由于返回值为无符号整形,if是真的。
3.strcpy和strncpy
strcpy——字符串粘贴函数
特点:会把源字符串的'\0'也粘贴过去
缺陷:源字符串必须要小于目标字符串空间的大小,否则程序会崩溃
strncpy——指定长度字符串粘贴函数
特点:可以指定粘贴上去的源字符串长度
如果指定粘贴的数量比源字符串大,则在后面加上'\0',直到满足长度要求
缺陷:如果指定的长度里没有'\0',函数不会自动加上'\0'。
4.strcat和strncat
strcat——字符串追加函数
特点:将源字符串包括‘\0’一起追加在目标字符串后面
缺陷:目标空间必须能够容纳追加后的长度,源字符串必须以'\0'结尾,否则字符串长度无法预测,且会越界访问
不能自己追加追加
原因:在进行字符串追加时,源字符串追加时会把自己也给覆盖
strncat——控制长度的字符串追加函数
特点:可以指定追加源字符串的字符数量
当指定的数量小于源字符串长度,会直接加上'\0',不会再进行操作。
5.strcmp和strncmp
strcmp——字符串比较函数
缺陷:在不同的编译器中,返回值有所不同,在VS中,大于是1,小于是-1,等于是0.而在其他编译器中,大于是>=0的数,小于是<=0的数,等于也是0,因为在一些编译器中返回值是不相同字符的差。
strncmp——规定长度的字符串比较函数
缺陷:比较规定的长度,返回规则与strcmp相同
6.strstr
strstr——字符串查找函数
返回值为char* 的指针,返回查找到字符串的首地址
7.strtok
strtok——字符串分割函数
strtok函数会修改指向字符串的内容,需要注意这一特点
当strtok函数找到指定字符时会把它转换为'\0',并且返回这个字符串的首元素地址,并且记住‘\0’的位置(应该是定义了一个static类型的指针变量),下次使用函数时,不必再传入str字符指针,字节传入NULL就能完成操作。当完成分割,返回一个NULL。
注意函数两个参数都是指针,但是在实际操作中分割字符指针可以直接用"字符串"表示,而且可以选择多个分割符,且不需要用逗号隔开,如下图
而第一个参数必须是一个可以被修改的字符串,不能直接是字符串指针,如下图就不行
想要一次性把字符串全部分割完,需要用到循环结构,如下图
8.strerror
strerror——报错函数
当函数中出现某种错误,errnum会变为相应的错误码,从而打印错误信息。
9.字符串分类函数
举个例子,当 isdigit(a)中的a为0-9时 isdigit(a)为真,反之为假
10.字符串转换函数
tolower(a) 将a转换为小写字母
toupper(a) 将a转换为大写字母