目录
使用场景
字符型数组定义:
初始化
数组储存
打印
字符型数组常见函数
常见操作
strcpy:字符串拷贝
strcat(str1,str2)字符串拼接
strcmp:字符串比较
注意:
二维字符型数组
使用场景
:c语言没有字符串类型,也无法定义字符串变量,只能通过字符型数组,每个元素存放一个字符,最终存放字符串
字符型数组定义:
数据类型 数组名 [元素个数]
char str [20] ;
注意:元素个数必须是常量或者常量表达式
元素个数必须能够容纳下所有字符,包括\0
字符型数组和字符串的区别:字符型数组可以存放字符,不一定包含\0,字符串末尾必须要有\0
字符串以\0来结尾,但是还是不会丢掉后面的\0
初始化
初始化不能与赋值
全部初始化:char str [6] = {'a','d','r','r','e','\0'};
char str [6] = {"heelo"};
char str [6] = "heelo";
局部初始化: char str [6] = {'r','e','\0'}; 没有给定初值的元素,值为0(\0)
char str [6] = {"hee"};
char str [6] = "hee";
char str [6] = {0};是清零 char str [6] = "0";不是是清零
默认初始化:char str [] = {'a','d','r','r','e','\0'};
char str [] = {"heelo"};
char str [] = "heelo";
数组储存
字符型数组所占字节 = 元素个数
连续性储存
打印
printf("%c",a[n]);打印单个字符
printf("%s",a);打印一串字符 一直到\0,没有\0就会越界找,程序就会有崩溃的风险
puts(a)
注意:打印字符串会打印到最近的一个\0就会结束打印
scsanf("%s",a); 只有%c可以接收空格,有空格要用
gets(a);接收带空格的字符串
确保字符串末尾由\0
字符型数组常见函数
strlen:获得字符串的长度(从字符串开头到最近的\0中间元素的个数,不包含\0)
scanf:获得所占内存大小,包括\0
常见操作
strcpy:字符串拷贝
拷贝字符串,不太安全
strcpy(目的空间,拷贝数据);
目的空间一定要比拷贝数据大,要不然就会内存越界
strcat(str1,str2)字符串拼接
:将str2拼接到str1的末尾
strcmp:字符串比较
字符串的比较,如果两个字符串相同,结果为零
如果第一个字符串>第二个字符串 ,结果为>0的值
如果第一个字符串<第二个字符串 ,结果为<0的值
两个字符串比较,从左到右每个字符进行比较,不同的字符,谁的ASCII码值大,字符串就大
注意:
上述参数常量和变量都可以
二维字符型数组
定义:数据类型 数组名 [行数][列数];
char str [5] [32]
存储:和二维数组类似
连续性,有序性
初始化:一般是局部初始化,和二维数组类似
二位字符型数组也可以看作是由两个以为字符型数组构成的