C语⾔字符串头⽂件string.h中的strlen,strcat,strcpy,strnc。。。
前⾔
1. 本博⽂内容基于VC6.0++,
2.本博⽂主要介绍包含在string.h中的⼏个字符串相关的函数;
strlen(字符串数组名)
字符串有效长度函数;
返回值:整型
功能:⽤来测量⼀个字符串的有效长度(所谓有效,就是从字符串中的第⼀个字符开始,⼀直到第⼀个空字符’\0’为⽌(不包括这个空字符)所占的字节数);
操作过程:
举例:
#include <stdio.h>
#include <string.h>
/*注意:*/
//1. VC6.0中,编译器为⼀个字符型数据分配⼀个字节;
//2. 编译器会为每个字符串的结尾分配结束标志,也就是空字符'\0';
void main()
{
char a[] ={"I Love You"};
char b[] = {"I Love You\0Holle"};
printf("字符串a的有效字符长度为:%d\n",strlen(a));
printf("字符串b的有效字符长度为:%d\n",strlen(b));
}
运⾏:
注意:字符串的有效长度归有效长度,但并不代表b字符串中第⼀个’\0’后的字符都是没有的;
strcat(字符串数组名1,字符串数组名2)
字符串拼接函数;
返回值:字符指针
功能:将字符串2的有效字符拼接在字符串1后,并且拼接时字符串1的结束标志被字符串2的第⼀个字符替代;
注意:
c语言如何创建字符串数组
1.拼接函数执⾏完毕后,字符串2并没有改变,字符串1改变,最后字符串1等于原字符串1+字符串2;
2.定义字符串1的时候,数组长度必须⼤于字符串1+字符串2的长度;所以字符串1在定义的时候如果知道后来要⽤strcat函数,那么必须定义⾜够的长度;(然⽽在实际操作⼯程中,定义第⼀个字符串的长度可能会被误操作,使得字符串1的长度不够容纳再放进来的字符串2,这是程序出现了语法上的错误,但是,编译器可能检查不出来,根据每个电脑的硬件,操作系统,编译环境的不同,或许我们感受不到这个错,但是实际上这个问题是真实存在的,这个⼀定要了解,不然编写⼤型程序的时候可能会把错误表现出来;)
执⾏操作:
举例:
#include <stdio.h>
#include <string.h>
void main()
{
char a[30]="I Love China";
char b[]="I Love You";
printf("拼接之前a占⽤的内存⼤⼩:%d\n",sizeof(a));
printf("拼接后的字符串是:%s\n",strcat(a,b));
printf("拼接后的a是:%s\n",a);
printf("拼接后的b是:%s\n",b);
printf("拼接后a的第15位字符是:%c\n",a[14]);
printf("拼接后a的第17位字符是:%c\n",a[16]);
printf("拼接之后a占⽤的内存⼤⼩:%d\n",sizeof(a));
}
运⾏:
strcpy(字符串数组名1,字符串数组名2)
复制字符串;
功能:将字符串2内的字符复制并覆盖到字符串1;
返回值:字符指针
定义:strcpy(字符串1,字符串2); 含义:将字符串2的字符,全部把字符串1的内容给覆盖(包括结束标志和空字符)
注意:
1. 字符串1的定义空间也必须要⼤于加上字符串2存储空间;不然程序可能报错或者出现潜在错误;
2. 复制函数执⾏完毕后,原字符串1的有效字符就被字符串2全部替换掉,并且执⾏后的字符串1的有效字符串等于字符串2;
执⾏原则:
情况1:字符串2的有效字符⼤于字符串1的有效字符
情况2:字符串2的游侠字符⼩于字符串1的有效字符(要切记这个原理)
注意:在对上图的复制后的函数进⾏输出时,若⽤%s输出,第⼀个空字符后的字符将不会被输出;如果⽤字符遍历%c输出,则可以全部输出;
举例:
运⾏结果:
strncpy(字符串名1,字符串名2,常量表达式n);
#include <stdio.h>
#include <string.h>
void main()
{
char a[30]="I Love You";
char b[]="I Love China";
printf("a 的最初长度为:%d\na 字符串是:%s\n",sizeof (a),a);
printf("b 的最初长度为:%d\nb 字符串是:%s\n",sizeof (b),b);
printf("将b 赋值给a 后的字符串长度为:%d\n 字符串是:%s\n",sizeof (a),strcpy(a,b));
printf("赋值后a 的长度为:%d\na 字符串是:%s\n",sizeof (a),a);
printf("赋值后b 的长度为:%d\nb 字符串是:%s\n",sizeof (b),b);
}
前n项选择复制函数;
功能:赋值字符串2的前n个字符给字符串1的前n个;
返回值:字符指针
定义:strncpy(字符串名1,字符串名2,常量表达式n);
注意:
1. 这个函数和strcpy是类似的,主要功能都是类似的;但是strcpy是全复制,strncpy是前n项赋值;
2. 注意n的值不要⼤于字符串2或字符串1字符长度;
操作过程;
举例:
#include <stdio.h>
#include <string.h>
void main()
{
char a[] = "I Love China";
char b[] = "It is cat";
printf("复制后的数组为:%s\n",strncpy(a,b,4));
printf("复制后a的字符串是:%s\n",a);
}
运⾏结果:
strcmp(字符串名1,字符串名2)
字符串⽐较函数
返回值:
1,说明字符串1>字符串2;
0,说明字符串1==字符串2;
-1,说明字符串1<;字符串2;
功能:⽐较两个字符串的⼤⼩;
⽐较的⽅式:将字符串1和字符串2中下标相同的字符从0下标开始逐个⽐较;
⽐较的依据:ASCII表;(符号在表中的编码越⼤,字符就越⼤)
注意:
1. 函数执⾏完毕后两个字符串并没有发⽣改变;
操作过程:
举例:
#include <stdio.h>
#include <string.h>
void main()
{
char a[] = "I Love China";
char b[] = "It is cat";
printf("⽐较结果是:%d\n",strcmp(a,b));
}
运⾏结果:
strlwr(字符串名)和strupr(字符串名);
⼤写转⼩写转换符和⼩写转⼤写转换符;
返回值:字符指针
功能:strlwr将字符串内的⼤写字母全部转化为⼩写; strupr将字符串内的⼩写字母全部转化为⼤写字母; 注意:转化后的字符串将发⽣改变;
举例:
#include <stdio.h>
#include <string.h>
void main()
{
char a[] = "I Love China";
char b[] = "It is cat";
printf("a转换成⼤写:%s\n",strupr(a));
printf("b转换成⼩写:%s\n",strlwr(b));
printf("转化后的a是:%s\n",a);
printf("转化后的b是:%s\n",b);
}
运⾏结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论