首页 理论教育字符数组与字符串-《C语言程序设计》

字符数组与字符串-《C语言程序设计》

【摘要】:图4.9字符数组初始化状态③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。图4.11程序运行结果4.字符串字符串:是用双引号括起来的字符序列,也称为字符串常量。图4.13存储状态用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。

1.字符数组

字符数组用来存放字符型数据,每个数组元素存放一个字符。在C 语言没有字符串变量,若要表示一个字符串时,可用字符数组来实现。字符数组的定义、初始化和引用与其他数组类似。

(1)一维字符数组的定义。

格式:

功能:定义一个一维字符数组,其中常量表达式的值就是字符数组元素的个数。

例如:

每个元素可以存放一个字符,例如:

赋值后数组在存储器中的状态如图4.8 所示。

图4.8 字符数组存储状态

字符数组与整型数据(ASCII 码)可以通用,因此也可以定义一个整型数组用来存放字符数据,例如:

(2)二维字符数组的定义。

格式:

功能:定义一个二维字符数组,常量表达式1×常量表达式2 的值就是字符数组元素的 个数。

例如:

该语句定义了一个数组名为c 的二维字符数组,该数组有3 行5 列共15 个元素,每个元素可存储一个字符,例如:

则该数组中存放了字符串“Bei Jing China”。

2.字符数组的初始化

字符型数组初始化的方法与数值型数组初始化的方法类似。

(1)一维字符数组初始化。

(2)二维字符数组初始化。

例如:

说明:① 若大括号中的初值多于数组的长度时,按语法错误处理。

② 若大括号中的初值少于数组的长度时,剩余元素自动定义为空字符‘\0’。

例如:

初始化状态如图4.9 所示。

图4.9 字符数组初始化状态

③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。

例如:

字符数组c 的长度自动定义为12。

④ 也可以定义和初始化二维字符数组,方法与定义二维整型数据数组相同。

3.字符数组的引用

字符数组引用的方法与数值数组相同,格式如下:

一维字符数组:

二维字符数组:

【例4.6】在计算机屏幕上显示“for(i=0;i<9;i++)”。

(www.chuimin.cn)

程序运行结果如图4.10 所示。

图4.10 程序执行结果

【例4.7】利用二维字符数组输出一个钻石图形。

程序运行结果如图4.11 所示。

图4.11 程序运行结果

4.字符串

(1)字符串:是用双引号括起来的字符序列,也称为字符串常量。有效字符包括字母、数字、专用字符和转义字符等。例如,"I am a boy","No32","a+b","%d\n"。

(2)字符串结束标志:在C 语言中,约定‘\0’作为字符串的结束标志,占用一个内存单元,不计入字符串长度,即字符串在内存中所占的字节数=字符串的长度+1。在处理字符数组的过程中,遇到字符‘\0’,表示字符串结束。例如,字符串“I am happy”在内存中的存储形式如图4.12 所示。

图4.12 字符数组存储状态

(3)用字符串常量给字符数组赋初值:C 语言允许用字符串常量对字符数组初始化,即赋值。例如:

字符数组str 有12 个元素,在存储时占用13 个单元,最后一个存放结束标志‘\0’。C 语言并不要求所有的字符数组的末尾必须有一个结束‘\0’,为了处理方便,最好用‘\0’表示结束。

5.字符串输入/输出

(1)逐个字符输入或输出:用格式符“%c”输入/输出字符。

例如:输入并显示字符串“Liu Xiang”。

程序运行结果:

(2)将整个字符串一次全部或部分输入/输出:用格式符“%s”输出字符串。例如:从键盘上输入一个字符串,并显示在屏幕上。

程序运行结果:

6.字符串输入/输出时的注意问题

(1)输出字符串内容中不包括结束标志符\0。

(2)对字符数组按字符逐个输入/输出时,要用格式符%c,且指明数组元素的下标。字符数组整个输入或输出时只需用格式符%s,譬如printf(“%s”,数组名)。

(3)由于数组名是数组的起始地址,对字符数组输入时,只需写出数组名,不需要取地址运算符&,譬如:scanf(“%s”,数组名)。

(4)如果字符数组长度大于字符串实际长度,在按整个字符串输出时,遇‘\0’时结束。

例如:

程序运行结果:

(5)如果一个字符数组中包含一个以上‘\0’,则遇第一个‘\0’时输出结束。

(6)如果利用一个scanf 函数以格式符%s 输入多个字符串,则以空格分隔。例如:

输入数据:

在内存中数组 a、b、c 的状态如图4.13 所示。

图4.13 存储状态

(7)用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。例如:

程序运行结果如图4.14 所示。

图4.14 程序运行结果