字符数组

文章详细介绍了C语言中如何处理字符数组,包括字符数组的定义、初始化、引用以及字符串的结束标志的作用。字符数组用于存储字符串,字符串由字符序列组成,以作为结束标志。初始化时,系统会自动在字符串末尾添加。字符数组的输入输出可以通过%格式符进行,%c用于单个字符,%s用于整个字符串。在输入时,空格作为字符串的分隔符。
摘要由CSDN通过智能技术生成

我们知道,字符型数据有着ASCII码,他们有着对应的整数,
这就说明字符可以用数组进行存储。

在C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。

定义字符数组

用来存放字符数据的数组是字符数组。
在字符数组中的一个元素内存放一个字符。
如:
char c[5];
cc[0]=‘e’;c[1]=‘a’;c[2]=‘b’;c[3]=‘c’;c[4]=‘d’;

上面定义的就是字符数组c,其内元素为eabcd。
字符是按照整数存放的,因此也可以用int定义字符数组,
如:
int a[10]

字符数组的初始化

对于字符数组的初始化,我们也可以用“初始化列表”进行。
如下:
char c[10]={‘a’,‘b’,‘c’,‘d’,‘e’};
这5个字符会依次赋给c[0],c[1],c[2],c[3],c[4]。
注意字符要加单引号。

如果花括号中提供的字符个数大于数组长度,则出现语法错误。
如果花括号中提供的字符个数小于数组长度,则只将这些字符赋给数组中前面的元素,其余的元素自动定义为空字符(‘\0’)。

如果提供的字符个数与预定的数组长度相同,则在定义时可以忽略数组长度,
系统会自动根据初值个数确定数组长度。

字符数组中元素的引用

引用字符数组中的一个元素,可以得到一个字符。

这样如果我们进行循环就能得到一个字符串或图形。

如:
在这里插入图片描述

画一个图形的如下:
在这里插入图片描述
我们需要注意单撇号里面需要有字符。

字符串和字符串结束标志

在C语言中,将字符串作为字符数组处理。

在实际工作中,人们关心的往往是字符串的有效长度而不是实际长度。
为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,
以字符‘\0’作为结束标志。

如果字符数组中存有若干字符,前面9个字符都不是空字符(‘\0’),而第十个字符是‘\0’,
则认为数组中有一个字符串,其有效字符是9个。

在遇到字符‘\0’时,表示字符串结束,把他前面的字符组成一个字符串。

C系统在用字符数组存储字符串常量时会自动加一个‘\0’作为结束符。

如果在一个字符数组中先后存放多个不同长度的字符串,
则应使数组长度大于最长的字符串的长度。

'\0’代表ASCII码为0的字符,
从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,
而是一个“空操作符”,即它什么也不做。
用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。

我们之前写过这样的一个语句:
printf(“How do you do?\n”);
这个语句里面系统自动在’\n’后面加了一个‘\0’用来作为字符串的结束标志。
在执行printf函数时,系统没输出一个字符就检查一次,
看下一个字符是否为’\0’,遇到’\0’就停止输出。

对于字符串的初始化,我们也可以用数组来表示:
char c[ ]={“you are mine!”}
也可以把{}给省去,
char c[ ]=“you are mine!”
但是“”不能省去。

在对字符串进行初始化时,如果字符串长度小于数组长度,则与其他数组初始化相同,前面的时赋值的字符,后面的都是’\0‘,即空字符。

我们再进行数组初始化的时候,最好加上’\0’,这样便于后续进行操作。

字符数组的输入输出

字符数组的输入输出有两种方法:
1.逐个字符输入输出,这个用的格式符是“%c”
2.将整个字符串一次输入或输出,这个用的格式符是“%s”,意思是对字符串(string)的输入输出。

我们在存储时,系统自动添加’\0‘
但输出时,不会输出’\0’

用“%s”格式符进行输出字符串时,printf函数的输出项时字符数组名,而不是数组元素名
printf(“%s”,c[0]);是不正确的,这里面的c[0]时数组中的元素,
我们应该改成下面这样的:
printf(“%s”,c);

如果数组长度大于字符串的实际长度,也是遇到’\0’就停止输出。
如果一个数组上包含一个以上’\0’,遇到第一个就停止输出,不管后面还有没有内容。

如果我们用scanf函数输入多个字符串,我们再输入的时候需要以空格分隔开。
如:
char c1[5],c2[5],c3[5];
scanf(“%s%s%s”,c1,c2,c3);
这里没有了&
这是因为在C语言中数组名代表该数组第一个元素的地址(数组的起始地址)。

此时我们输入
How are you?
这里时分成三个字符串输入了
分别为:
c1[5]=“How”
c2[5]=“are”
c3[5]=“you”
在系统中,把空格字符作为输入的字符串之间的分隔符,
如果们们在一个字符数组c[20]的情况下输入:
How are you?
则只会把How送到数组里面。
第一个空格已经把他们分隔开了。

我们写出这样的式子:
printf(“%s”,c);
在系统中先按照数组名c找到数组第一个元素的地址,然后逐个输出其中的字符,直到遇到’\0’为止。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值