字符数组
用来存放字符数据的数组是字符数组。字符数组中的每一个元素存放一个字符,其定义和使用方法与其他类型的数据基本相似。
1.1字符数组的定义和使用
字符数组的定义与其他类型的数组类似,标准形式如下:
Char 数组名 【常量表达式】
例如:
Char array [5];
Array[0]=‘h’;
Array[1]=‘e’;
Array[2]=‘l’;
Array[3]=‘l’;
Array[4]=‘o’;
定义array为字符数组,包含5个元素
1.2字符数组的初始化
对字符数组赋初值的方法有很多种,分别介绍如下。
⑴最简单的方法是逐个字符赋给数组中各元素
例
用*打印平行四边形
当给字符数组赋初值时,如果提供的初值个数大于数组长度,则按语法错误处理,如果初值个数小于数组长度,则只将这些字符赋给数组中前面的元素,其余元素自动定义为空字符
⑵如果初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度
Char a[]=
{
‘’,’’,’*’
}
利用字符串给字符数组赋初值。通常用一个字符数组来存放一个字符串,字符串总是以’/0’作为串的结束符,因此当把一个字符串存入一个数组时,也把结束符‘/0’存入数组,并以此作为该字符串结束的标志。有了’/0’标志后,字符数组的长度就显得不那么重要。当然在定义字符数组时还是要估计一下实际字符串长度,以保证数组长度始终大于字符串的实际长度。如果在一个字符串数组中先后存放多个不同长度的字符串,则应该使数组的长度大于最长的字符串的长度。一字符串的方法对数组进行初始化赋值如下
Char c[]={“ai ni xie wen li ”};
或者去掉{}写为:
Char c []=”hello world”;
用字符串的方式赋值比字符逐个赋值要多占一个字节,多占的这个字节用于存放字符串结束标志’\0,上面的数组c在内存中的实际存放情况
h e l l o w o r l d \0
‘/0’是由c编译系统自动加上的。所以上面的赋值语句等价于;
Char []={‘h’,’e’,}
字符串用“”号括起来,这点有别于字符
1.3
字符数组的输入/输出方法
⑴格式字符%c,实现字符数组中字符的逐个输入与输出。
字符数组中逐个字符输出
字符逐个输入到字符数组中,再输出
⑵格式字符%s,将整个字符串依次输入或输出
2.12字符串输入输出
使用%s输入应该注意
①scanf(“%s”,array);注意这里的array没有&,C语言中规定数组名代表该数组的起始地址。如果写成scanf(“%s”&array)//错误
②用%s格式字符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名
③输出字符不包括结束符‘\0’。
④如果一个字符数组中包含多个‘\0’,则在遇到第1个时便结束输出。当输入字符串‘’
Welcome to our school
只会输出 welcome
之所以会有这样的结果,因为实际上并没有把这21个字符加上’\0’送到数组array中,而只将空格前的字符welcome送到array中
如果项多个字符串输入\输出
例子