长度受限制的字符串函数strncpy,strncat,strncmp 前言:在上一章,介绍了长度不受限制的字符串函数strcpy,strcat,strcmp,本章将介绍与它们对应的长度受限制的字符串函数strncpy,strncat,strncmp strncpy(字符串复制函数) strncpy与strcpy不同的地方就是多了个n,代表它是长度受限制的字符串复制函数 cplusplus介绍如下:
由上图可知,strncpy有3个参数,第一个为目标数组,第二个为要复制的源字符串,第三个为要从源字符串复制的最大字符数 (1)若限制字符数小于等于源字符串有效长度,则不会在复制结尾添加终止空字符’0’,这点与strcpy有所区别 (2)若限制字符串大于源字符串有效长度,则会在多余的地方补’0’ 举以下例子,方便大家理解上述第1点: 输出:
可以看到,strcpy与strncpy的打印结果有所区别,因为strcpy会在拷贝结束后结尾加上终止空字符’0’,而该题中限制字符数等于源字符串,strncpy不会在拷贝结尾加上终止空字符’0’ 举以下例子,方便大家理解上述第二点 输出:
此时的监视窗口情况: 拷贝前:
拷贝后:
通过上图监视窗口,我们发现arr2中下标为4的值由x变为’0’,这就是多余补’0’的情况,因此上面输出结果中第5个x消失了 strncat(字符串连接函数) 与上面的差不多,strncat是长度受限制的字符串连接函数 cplusplus介绍如下:
由上图可知,strncat有3个参数,第一个为目标字符串,第二个为要连接的源字符串,第三个为要从源字符串复制的追加字符数 目标字符串的终止空字符‘0’会被源字符串的第一个字符覆盖 追加结束后结尾补上终止空字符’0’,注意是补上!!! 若追加字符数大于源字符串大小,则追加完源字符串(包括’0’)就停止,不会补’0’ 举以下例子,方便大家理解上述最后一点: 输出:
监视窗口: 连接前
连接后:
比较上面两张监视图片,可以发现,下标为11及其以后的数组内容并未被改变。 strcat为什么不能自己追加自己 在上一篇文章中,曾提到过这个问题,但因篇幅原因,并未讲解,在这里对其进行解释 作图解释:
在VS中输出:
在DEV中输出:
可以发现,在VS中我们得到了我们想要的结果,但在DEV中结果却不正确,因为连接覆盖了目标字符串的终止空字符’0’,而目标字符串与追加字符串是相同的,所以追加字符串中结尾没有’0’,代码无法停止。 strncmp(字符串比较函数) strncmp是长度受限制的字符串比较函数 cplusplus介绍如下:
由上图可知,strncmp有3个参数,第一第二个为要进行比较的字符串,第三个为要比较的字符数 字符串比较规则 从第一个字符开始,比较其ASCII码值,若相等,则对应的第二个字符相互比较,以此类推,若前者大于后者,则返回一个大于0的数字,若前者小于后者,则返回一个小于0的数字,若两者相等,则返回0 strncpy的返回值图表
举以下代码,方便大家理解: 输出:
strcmp比较到第4个字符d与f,前者小于后者,返回小于0的值,而strncmp限制比较3个字符,到c停止,前者等于后者,返回0 文末BB:对哪里有问题的朋友,可以在评论区留言,若哪里写的有问题,也欢迎朋友们在评论区指出,博主看到后会第一时间确定修改。最后,制作不易,希望朋友们给点点赞和。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/61106.html