shuiyu 发表于 2017-12-27 21:24:55

《带你学C带你飞》第十九讲:字符串处理函数

本帖最后由 shuiyu 于 2018-1-1 11:10 编辑

越努力,越幸运。欢迎大家来看我的笔记{:10_297:},不对的请各位大佬指正,谢谢{:10_254:}

一、字符串的长度(strlen)和字符串的大小(sizeof)
(1)strlen():用来计算字符数组的长度,C 语言字符串的长度取决于结束符('\0')的位置,不包括结束字符"\0"。

(2)sizeof():用来计算字符串(数组)的大小,定义字符串或者数组的时候有多大那就是多大;如果没有在开始的时候定义大小,那么就是取决于字符串多大,这个时候就是包括‘\0’的了。

二、复制函数strcpy和受限的复制函数strncpy
(1)strcpy(函数1,函数2):函数1复制函数2的值并且覆盖掉自身的值。

(2)strcpy函数对于字符串不等长的时候:
如函数1较长,但是因为复制函数2的时候把函数2的‘\n’都复制过来了,所以字符串就结束了.
如函数2较长,如果函数1在定义的时候大小不足已存放下函数2的数据,就会发生溢出。

(3)strncpy(函数1,函数2,N)    函数1复制函数2的值并且覆盖掉自身的值,类似于strcpy,只是加了一个长度限制(即只复制前面N的字符)。

(4)strncpy函数:如果源字符串(函数2)的长度小于 n,那么就用 '\0' 填充额外的空间。如果源字符串(函数2)的长度大于或等于 n,那么只有 n 个字符被拷贝到目标数组中(注意:这样的话将不会以结束符 '\0' 结尾)。(PS:为了使该函数更“安全”,建议使用 dest = '\0'; 语句确保目标字符串是以 '\0' 结尾。)

三、连接函数strcat和受限的连接函数strncat
(1)strcat(函数1,函数2):字符串连接函数,会覆盖函数1的结束符(‘\0’),连接上函数2字符串,可以说是自动加上结束符‘\0’.(其实特也不能说是自动加上,因为函数2后面自动带了一个结束符的).

(2)strncat (函数1,函数2,N):函数用于拷贝源字符串(函数2)中的 n 个字符到目标数组的字符串后边,并在末尾添加结束符 '\0'。
如果源字符串(函数2)的长度小于 n,那么不会像 strncpy 函数那样使用 '\0' 进行填充(但结束符 '\0' 还是有的)。 另外,目标数组中的原有的字符串并不算在 n 中。

四、比较函数strcmp和受限的比较函数strncmp
(1)strcmp(函数1,函数2):strcmp 函数用于比较两个字符串。从该函数从第一个字符开始,依次比较每个字符的 ASCII 码大小,直到发现两个字符不相等或抵达结束符('\0')为止。

如果都一致就会返回0。如果函数1大于函数2则返回值为正数,反之为负数。
(2)strncmp(函数1,函数2,N):strncmp 函数用于比较两个字符串的前 n 个字符。从该函数从第一个字符开始,依次比较每个字符的 ASCII 码大小,发现两个字符不相等或抵达结束符('\0')为止,或者前 n 个字符完全一样,也会停止比较。

PS:就只有strncmp函数小甲鱼没有在教程中实践,那我就发一下我的实践好了


谢谢小甲鱼带来的视频教程,感谢!! {:10_303:}

本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记{:10_297:},不对的请各位大佬指教,谢谢{:10_254:}

K.洛水 发表于 2018-1-10 20:36:36

{:10_249:}

shuiyu 发表于 2018-1-11 16:06:59

K.洛水 发表于 2018-1-10 20:36


{:10_264:}
页: [1]
查看完整版本: 《带你学C带你飞》第十九讲:字符串处理函数