购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6.2 字符数组

用来存放字符数据的数组称为字符数组,它是C语言中常用的一种数组。字符数组中的每个元素都是一个字符,因此可用字符数组来存放不同长度的字符串。字符数组的定义方法与一般数组相同,下面是两个定义字符数组的例子:

C语言中字符串是作为字符数组来处理的。一个一维字符数组可以存放一个字符串,这个字符串的长度应小于或等于字符数组长度。为了测定字符串的实际长度,C语言规定以“\0”作为字符串结束标志,对字符串常量也自动加一个“\0”作为结束符。因此字符数组char menu[20]可存储一个长度≤19的不同长度的字符串。

在访问字符数组时,遇到“\0”就表示字符串结束,在定义字符数组时,应使数组长度大于它允许存放的最大字符串长度。另外,符号“\0”是一个表示ASCII码值为0的字符,它不是一个可显示字符,而是一个“空操作符”,在这里仅起一个结束标志的作用。

对于字符数组的访问可以通过数组中的元素逐个进行访问,也可以对整个数组进行访问。

例2-35 对字符数组进行输入和输出。

程序中用“%s”格式控制输入/输出字符串,这里输入/输出操作是对整个字符数组进行的,输入项必须是数组名c,而不能用数组元素名c[i]。在μVision4环境下对例2-35程序编译链接后进行仿真调试,启动程序全速运行,将光标移到串行窗口,从键盘输入HELLO并回车,系统会自动在输入的字符串后面加一个结束符“\0”,然后输出HELLO,如果输入的字符数大于10,则只取前10个字符作为有效字符输出。

前面介绍了数组的定义方法,可以在内存中开辟一个相应于数组元素个数的存储空间,数组中各个元素的赋值是在程序运行过程中进行的。如果希望在定义数组的同时给数组中各个元素赋以初值,可以采用如下方法:

数据类型 [存储器类型] 数组名[常量表达式]={常量表达式表};

其中,“数据类型”指出数组元素的数据类型。

“存储器类型”是可选项,指出定义数组所在的存储器空间。

“常量表达式表”中给出各个数组元素的初值。

需要注意的是,在定义数组并对数组元素赋初值时,初值的个数必须小于或等于数组中元素的个数(即数组长度),否则在程序编译时作为出错处理。赋初值时可以不指定数组长度,编译器会根据初值个数自动计算出该数组长度。因此数组名后面的“常量表达式”为可选项,省略该选项时数组的长度由实际初值的个数决定。例如:

对于多维数组可以采用同样的方法来赋初值,例如,可用下面的方法在定义一个二维数组的同时赋以初值:

给字符数组赋初值对于在程序存储器ROM中制作一些常数表格特别有用,例如可以采用如下方法在ROM中制作一张共阴极LED数码管显示字符段码表:

char code SEG[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

如图2.9所示的是利用8051单片机串行口实现的动态LED数码管扫描显示接口电路,在串行口上扩展一个移位寄存器74LS164作为共阴极7段LED数码管的段码数据口,8051的P1.0~P1.3作为LED数码管的位扫描信号,串行口工作于移位寄存器方式(方式0)。执行下面程序后可在LED数码管上显示出“8051”这几个数字。

图2.9 用串行口实现的LED数码管动态显示电路

例2-36 利用字符数组实现LED数字显示。 JQsOT2VhmYfjelZQKaWcQQc+RqqULbmglPg7hQgzS6YjR9NzVfrH1UjNL06hhogq

点击中间区域
呼出菜单
上一章
目录
下一章
×