一、strcmp
1、函数原理
strcmp是一种字符串比较函数,比较的是两个数组末尾字符ACSII码值的大小,如果末尾是'\0',0的ACSII码值比'q'小,说明数组1小于数组2.
2、函数实现
主函数可以这样写,返回值如果大于小于0,则arr1小于arr2,打印<,以此类推.
函数部分,由于数组传的是首元素的地址,并且我们是要比较两个数组,数组不需要被修改,所以形参设置成字符指针左边要加上const,要确保传过来的数组不能为空,用assert函数.
主体用while循环,循环条件数组相等数组++,如果两个数组都相同就返回0,不相同就跳出循环计算他们的差值.
二、strncmp
是strcmp函数的进阶用法,能控制比较多少个字符.
这个函数是按照返回的差值进行大小判断的,返回值 > 0,arr1 > arr2,返回值 == 0,数组相等,返回值 < 0,arr1 < arr2.
三个条件同时满足就是字符相同,字符不相同的情况下会跳出循环,返回差值.
三、strcpy
把一个数组拷贝到目的数组中去.
arr2为要拷过去的数组,arr1是目的数组.
函数要返回目的数组的起始位置,所以函数的类型是char*,arr1、arr2传的ai是首元素的地址,要用字符指针接收,其中src防止被修改需要加上const.
assert函数防止数组传过来的是空指针,主体用while循环,循环条件边赋值边++,极大提高了效率,最后返回start.
四、strncpy
是strcpy函数的进阶,可以控制数组拷贝几个字符过去.
arr2只有5个字符,假如要传6个字符过去,传多多少个arr1就会补上多少个0.
count只能是正数,所以他的类型是size_t.
每赋值一次,count需要--一次,假如数组赋值完了,count还没为0,就需要把dest数组后面全补上0.
五、strcat
能把一个数组拼接到另一个数组后.
arr1目标数组
要先将dest++至字符串末尾.
再用一个while循环边赋值边打印.
返回数组的起始地址.
六、strncat
strcat的进阶,能控制连接的字符个数.
strncat函数在连接完成之后会补上‘0’.
想让count正确计数,需要满足两个条件,count在*dest++时,要跟着--,减完之后,假如count还不为0,就继续在*dest后面补0,直到count等于0为止.