C语言学习—字符串函数总结string C语言学习—字符串函数总结string 和字符串有关的函数有很多,只需要学习常用的4种就够用,其他的在后面用到的时候自然而然就会。 在学习这些函数之前我们需要知道,为什么字符串会有大小之分(清楚后会对这几个函数有更深得了解):因为计算机是不认识字符的,他只认识1和0这两个数值。ASCII的十进制数由32个二进制组成,所以计算机的CPU只要比较ASCII中字符对应的数值就可以求出那个字符串大,这也是为什么字符串有大小的原因。ASCII图下面有: 这次总结的4个函数是:strlen、strcmp、strcpy、strcat. 函数的头文件是:#include <stdio.h> strlen: strlen是计算字符串有效长度的函数。格式:strlen(字符数组名字) 即使字符数组的长度是10个字节的空间,但是strlen只会求出字符数组的有效长度。 strlen的工作原理: strlen会遍历字符数组,同时开始计数。当遇到结束标志符‘0’的时候,就结束遍历,同时以遍历的个数作为返回值输出。 strcmp: strcmp是比较两个字符串大小的。字符串也有大小?有,字符串是由字符组成的,字符在计算机中是由ASCII组成的。所以字符串也有大小。下面是ACCII表的一部分:
格式:strcmp(字符串1的名字,字符串2的名字);字符串1减字符串2。代码参考如下: strcmp的工作原理: strcmp比较字符串时有种大情况:字符串长度不相等时->字符串相等时,分情况分析: 2.1 字符串长度不相等:strcmp找到两个字符串中最短的字符串的最大有效下标n,用字符串a的对应下标n减去字符串b的对应下标n,得到的值作为返回值(字符有对应的十进制数的,看上面的ACSII表,就是他们对应的十进制数值进行相减),下标n之前的素就不管了,这就是两个要比较的字符串长度不同时,strcmp的工作原理。 2.2 字符串长度相同时:当两个字符串长度相等时,strcmp就会从下标0开始,逐个对比字符串的字符素对应的ASCII的大小(有点绕),意思就是逐个对比字符对应ASCII的十进制数值的大小。回到strcmp原理上面,当所有数组所有有效素的ASCII值之差都是0时,那么0就作为函数的返回值输出。 当逐个比较素时,在第n位出现了两个字符的ASCII值之差不为0的时候,那么后面的素就不会比较了,函数会以n的返回值输出,n有正也有负,我们就可以通过判断strcmp函数的返回值的正负还是为0从而判断出两个字符串谁大谁小了。 总结:当strcmp的返回值>0时,字符串a>字符串b;当strcmp的返回值=0时,字符串a=字符串b;当strcmp的返回值<0时,字符串a<字符串b; strcpy: 格式:strcpy(字符串a,字符串b); 作用:strcpy是把字符串b的内容复制到字符串a中,不会覆盖字符串a的内容。 参考代码:
strcpy工作原理: strcpy函数会从下标0开始,逐个读取字符串的数据,字符串b的第n位存放到字符串a的第n位。字符串b每把一个素放进字符串a里,字符串a里原本的数据就会先往后面移一位,所以字符串a里面的数据不会被覆盖。只要字符串a的空间能够容纳字符串b的数据,字符串a原本的数据就不会因为内存溢出原因而出错。
strcat: 格式:strcat (字符串a,字符串b); 作用;strcat是把两个字符串拼接在一起的函数。简单的理解就是:我们前面说到strcap是把字符串b插到字符串a前面,那么strcat函数就是把字符串b插到字符串a后面。具体来看strcat的工作原理: strcat工作原理:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/50230.html