strlen函数常用来计算字符串的长度
第一个注意点是该函数是以/0为结束标志的,所以如果初始化的数组是 char arr[]={'a','b','c'}; 的话,strlen会生成一个随机值,因为该数组没有明确的定义/0的位置。
下面是strlen函数的模拟实现
此处还要注意strlen返回的值为无符号类型,在进行无符号整型类型的运算的时候不会出现负数,
如下面的代码就会出错
因为无符号整型类型的数运算不会得到负数,所以该代码的目的无法达成。
因为源字符必须以'\0'结束,所以不能使程序找不到\0,不然无法正确运行
上面例子就是找不到\0的情况。
另外被赋予值的目的不能空间太小,防止存不下复制的内容,如以下代码
还有就是 被赋予值的目的地应是可修改的空间,而不是固定的空间,如以下代码就是不可修改而导致报错
该函数称为字符串追加,有两种追加方式
第一种如下
第二种如下
即为字符串追加既可以直接追加字符串也可以追加存放字符串的数组,
追加的地方是从被追加数组的’ \0 ‘ 开始向后替换。 在追加的结束位置依然是以 ‘\0’ 为标志,在最后 \0 被追加过去后结束。
下面是strcat(字符串追加函数)的模拟
当然,strcat不能使用字符串追加字符串,因为在追加的时候会将‘\0’覆盖掉,使函数无法停下。