1.字符数组的定义
在C语言中,没有专门的字符串变量,而是将字符串存入字符数组来处理;即用一个一维数组来存放一个字符串,每个元素存放一个字符;如:char c[5]; 字符数组是数组的一个特殊情况,但它的定义方法与上述介绍的类似;引用方法可以与上述介绍的同,也有其独特的引用方法;由于字符型与整型是相互通用的,因此上面定义也可改为:int c[5];
2.字符数组的初始化
①按元素赋初值
如 static char c[10]={'s','t','o','r','e'};
注意:static char c[10]; 则 c[0],c[1],...,c[9]初值均为'\0';
但若 char c[10]; 则c[0],c[1],...,c[9]的值是未知的。
在c语言中,将字符串作为字符数组来处理,即用一个一维数组来存放一个字符串。如:c[10]存放字符串"store"。为了测定实际字符串长度,c语言规定了一个“字符串结束标志”,即‘\0’时,表示字符串结束。
②使用字符串常量给字符数组赋初值,如:char c[6]={"china"}; 或 char c[6]="china"; 或 char c[]="china";
注:以字符串方式赋值时,必须保证数组元素个数>=字符个数+1(字符串后面自动加上一个'\0')
需要注意的一点:数组初始化后,剩余的元素均为\0,但是如果数组未初始化,则static数组元素的值为\0,否则元素值是随机的。
3.字符串的引用与输入输出
对于字符数组,在程序中既可以逐个引用字符串中的单个字符(数组元素)
也可以一次引用整个字符串(数组)
①逐个字符数组元素输入输出:用%c格式符描述
②整个字符串输入输出:用%s格式符描述
注:用%s输出,无论数组元素有多少个只要遇到"\0"便结束;
4.字符串处理函数
①gets(字符数组名)
从键盘上输入一个字符串(以回车结束)放到数组中,并且得到一个函数值,该数组值是字符数组的起始地址,如:gets(str);
②puts(字符数组名/字符串)
将数组中的字符串(以'\0结束的字符序列')输出到终端上,输完换行 ;
③strcpy(字符数组1,字符串/字符数组2)
将字符串/字符数组2中的字符串拷贝到字符数组1中;
注意:字符数组1的长度>=字符数组2/字符串的长度;
拷贝时连同'\0'一起拷贝
不能把字符串或字符数组直接赋给一个字符数组。如图:
④strcat(字符数组1,字符串/字符数组2)
将字符串或字符数组2连接到字符串1的后面,并放在字符数组1中;
⑤strcmp(字符数组1/字符串1,字符数组2/字符串2)
功能:比较两个字符串,结果,例如:
字符串1>字符串2时: 正数 x=strcmp("abc","ABC")
字符串1=字符串2时: 0 x=strcmp("ABC","ABC")
字符串1<字符串2时: 负数 x=strcmp("1000","2")
注意:对两个字符串的比较,不能用以下形式:str1==str2 或 str1>str2 或 str1<str2;只能用:strcmp(str1,str2) >0 或 ==0 或<0来判断;因此,字符串的比较、拷贝、连接都必须用函数
⑥strlen(字符数组名/字符串)
测试字符串长度(不含'\0')
⑦strlwr(字符串)
将字符串中大写字母转换成小写字母
⑧strupr(字符串)
将字符串中小写字母转换成大写字母
谢谢大家喜欢和支持!