字符数组

字符数组
收藏
0有用+1
0
字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。C语言中没有字符串类型,字符串是存放在字符型数组中的。
中文名
字符数组
外文名
character array
例    如
char a[10]
释    义
用来存放字符数据的数组
作    用
存放字符或字符串
类    别
计算机软件术语

定义

播报
编辑
用来存放字符数据的数组称为字符数组。字符数组中的一个元素存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。
其定义的一般形式是:char 数组名[颈旬寻数据长度]
例如:
阿雅只寻char c[1龙纸奔0];
c[0]='I'; c[1]=' '; c[2]='l'; c[3]='o'; c[4]='v'; c[5]='e'; c[6]=' '; c[7辨劝]='y'; c[8]='榆匙腊o'; c[9]='u';
以上定义了c为字符数组,包含10个元素。
由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:
int c[10];
但这时每个数组元棵臭罪汽柜去素占2个字节的内存单元,浪费存储空间。 [1]
兆罪字符数组也可以是二维或多维数组,例如:
char c[5][10];
即为二维字符数组。

初始化

播报
编辑
字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。
(1)用字符常量逐个初始化数组。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
把8个字符依次分别赋给c[0]~c[7]这8个元素。
如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
这时c数组的长度自动定为9。
也可以定义和初始化一个二维字符数组,例如:
char diamond[5][5]={{' ',' ','#'},{' ','#',' ','#'},
{'#',' ',' ',' ','#'},{' ','#',' ','#'},{' ',' ','#'}};用它代表一个菱形的平面图形。
(2)字符串常量初始化数组。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
可写为:
char c[ ]={"C program"};
或去掉{}写为:
char c[ ]="C program";
注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m','\0'}; [1]

元素的引用

播报
编辑
可以通过引用字符数组中的一个元素,得到一个字符。
数组的引用形式为:
数组名[下标]
【例5-8】输入“I like playing basketball”并显示出来。
#include<stdio.h>
int main(void)
{
char a[26]="I like playing basketball";
int i;
for(i=0;i<26;i++)
printf("%c",a[i]);
}
运行结果为:I like playing basketball [2]

结束标志

播报
编辑
字符串和字符串结束标志
在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'\0'作为结束标志 [1]

输入输出

播报
编辑
  1. 1.
    字符数组的输入(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:for(i=0;i<10;i++)a[i]=getchar();用scanf()赋值:for(i=0;i<10;i++)scanf("%c",&a[i]);(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:scanf("%s",a);或scanf("%s“,&a[0]);输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。
  2. 2.
    字符数组的输出(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:for(i=0;i<10;i++)a[i]=putchar();用printf()赋值:for(i=0;i<10;i++)printf("%c",a[i]);输出结果为:c program [2](2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];printf("%s",a);输出结果为:c program

应用举例

播报
编辑
例6.8 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include<stdio.h>
void main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ') word=0;
else if(word==0)
{
word=1;
num++;
}
printf("There are %d words in this line.\n",num);
}
运行结果
I am a boy.
There are 4 words in this line. [1]