C语言之数组系列三:字符数组[通俗易懂]

编程文档 (58) 2023-08-09 13:36

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说C语言之数组系列三:字符数组[通俗易懂],希望能够帮助你!!!。

1.字符数组的定义

在c语言中,没有专门的字符串变量,而是将字符串存入字符数组来处理;即用一个一维数组来存放一个字符串,每个元素存放一个字符;如:char c[5]; 字符数组是数组的一个特殊情况,但它的定义方法与上述介绍的类似;引用方法可以与上述介绍的同,也有其独特的引用方法;由于字符型与整型是相互通用的,因此上面定义也可改为:int c[5];

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第1张

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’时,表示字符串结束。

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第2张

②使用字符串常量给字符数组赋初值,如:char c[6]={"china"}; 或 char c[6]="china"; 或 char c[]="china";

注:以字符串方式赋值时,必须保证数组元素个数>=字符个数+1(字符串后面自动加上一个'\0')

需要注意的一点:数组初始化后,剩余的元素均为\0,但是如果数组未初始化,则static数组元素的值为\0,否则元素值是随机的。

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第3张

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第4张

3.字符串的引用与输入输出

对于字符数组,在程序中既可以逐个引用字符串中的单个字符(数组元素)

也可以一次引用整个字符串(数组)

①逐个字符数组元素输入输出:用%c格式符描述

②整个字符串输入输出:用%s格式符描述

注:用%s输出,无论数组元素有多少个只要遇到"\0"便结束;

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第4张

4.字符串处理函数

①gets(字符数组名)

从键盘上输入一个字符串(以回车结束)放到数组中,并且得到一个函数值,该数组值是字符数组的起始地址,如:gets(str);

②puts(字符数组名/字符串)

将数组中的字符串(以'\0结束的字符序列')输出到终端上,输完换行 ;

③strcpy(字符数组1,字符串/字符数组2)

将字符串/字符数组2中的字符串拷贝到字符数组1中;

注意:字符数组1的长度>=字符数组2/字符串的长度;

拷贝时连同'\0'一起拷贝

不能把字符串或字符数组直接赋给一个字符数组。如图:

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第6张

④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来判断;因此,字符串的比较、拷贝、连接都必须用函数

C语言之数组系列三:字符数组[通俗易懂]_https://bianchenghao6.com/blog_编程文档_第7张

⑥strlen(字符数组名/字符串)

测试字符串长度(不含'\0')

⑦strlwr(字符串)

将字符串中大写字母转换成小写字母

⑧strupr(字符串)

将字符串中小写字母转换成大写字母

谢谢大家喜欢和支持!

发表回复