1.strlen()函数:
用法形式:
strlen(str);
首先,先来看看官方介绍:
解析:
strlen()函数是一个专门用于求取字符串长度的函数,调用时需要包含头文件<string.h>。。
用法:
模拟实现:
注意---与库函数sizeof()的区分:
本质上sizeof()是一种单目运算符,可以用于求取操作数存储空间的大小,它可以计算数据类型、变量或函数等所占用的内存空间大小(单位是字节),同样也可以计算字符串的长度,而库函数strlen()是一个由C标准库提供的函数,专门用于计算字符串的长度(单位是字节)。那它们又有什么区别呢?
首先,我们需要了解一下电脑是如何结束数据读取的。电脑是直性子,在数据被读取完成后,需要通过结束符 '\0' 来提示电脑结束读取,而在我们每次创建操作数时系统都将自动的在其后添加上结束符' \0 ' ,以便在合适的位置结束读取。
同样,我们也可以手动控制读取的结束位置。
对了,回到对它们的区分上,其实,sizeof()和 strlen() 的区别就在这个结束符' \0 '上,因为 sizeof()计算的是操作数所有储存空间的大小, 我们的结束符' \0 ' 同样也需占据储存空间(一个字节),而我们的库函数 strlen() 就更加“智慧”点 ,只会计算结束符' \0 '之前的长度大小。
总的来说,sizeof()是一种单目运算符,计算的是操作数所有储存空间的大小,而strlen()是一个库函数,计算的是在结束符' \0 '之前的储存空间大小。 这样对同样的字符串计算长度时,单目运算符sizeof()计算的值 就会比strlen()库函数大1。
2.strcmp()函数:
用法形式:
strcmp(str1,str2);
官方(cplusplus.com)介绍:
strcmp() 函数用于对比俩字符串大小(也就是对比俩字符串里相对应的字符的ASCLL码值)。
若str1和str2完全相同,则返回0;若str1在和str2相对应的某个字符的ASCLL码更大 ,则返回一个大于零的数;若str1在和str2相对应的某个字符的ASCLL码更小 ,则返回一个小于零的数。
注意:调用时需要包含头文件<string.h>。
(1)相同时
(2)str1大于str2时
( A的ASCLL码大于a的ASCLL )
(3) str1小于str2时
( A的ASCLL码小于a的ASCLL )
注意:strcmp()库函数的调用需要包含头文件<string.h>。
模拟实现:
注意:其中asset()库函数是用来判断所给值是否为空(NULL),如果为空则系统报错。
调用assert()库函数时需要包含头文件<assert.h>。
3.strncmp函数
官方介绍:
用法:
strcmp(str1,str2);
用法解析:
strncmp()库函数是strcmp()库函数的进阶版,用法类似,不同的是 strncmp ()库函数比strcmp()库函数多了个n,而他们的不同就提现在这个n上,strncmp()中的n,可以理解为数量。
总的来说,就是将C字符串str1的num字符与C字符串str2的num个字符进行比较。
注意:
调用时需要包含头文件<string.h>,同时 ,这个函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续执行以下对,直到字符不同,直到到达终止空字符,或直到两个字符串中的num字符匹配,以先发生者为准。
模拟实现:
4.strcpy()函数
官方介绍:
用法:
strcpy(str1,str2);
解析:
strcpy()库函数的功能是将源指向的C字符串(str2)复制到目标指向的数组(str1)中,包括终止空字符(并在该点停止)。
注意:
为了避免溢出,目标指向的数组的大小必须足够长,以包含与源相同的C字符串(包括终止空字符),并且不应该与源在内存中重叠。
调用时需要包含头文件<string.h>。
模拟实现:
未完待续……(^~^)