目录
字符串可以用数组来表示,所以字符串的集合也可以用数组的数组(即多维数组)来表示,下面我们就来学习字符串数组。
类型相同的数据集合适合用数组来实现,所以字符串的集合就称为字符数组。
首先来看下生成并显示字符串数组的程序:
#include<stdio.h>
int main()
{
int i;
char cs[][6] = {"ABC", "DEF", "MAX"};
for(i = 0; i < 3; i++)
{
printf("cs[%d] = \"%s\"\n", i, cs[i]);
}
return 0;
}
该程序中的数组是由三个字符串组成的,数组cs是3行6列的二维数组(元素类型为char[6]型、元素个数为3的数组)。
数组cs的元素,是char[6]型的数组,数组cs[1—3]分别表示“ABC”,“DEF”,“MAX”,如下图:
二维数组的各构成元素都是由二维数组的两个下标所构成,如:字符“A”由cs[0][0]表示
数组声明中初始值不足时,用0来初始化该元素,所以各个字符串后面的空白部分都初始化为null字符。
我们来编写一个从标准输入读到的字符串的各个字符逐个往字符串数组中的各个元素赋值:
#include<stdio.h>
int main()
{
int i;
char s[3][128];
for(i = 0; i < 3; i++)
{
printf("s[%d]:", i);
scanf("%s", s[i]);
}
for(i = 0;i < 3;i++)
{
printf("s[%d] = \"%s\"\n", i, s[i]);
}
return 0;
}
该程序中的数组s是3行128列的二维数组,即元素类型为char[128]、元素个数为3的数组,数组为3行是因为需要读取并显示三个字符串。
因为我们事先不知道要输入什么字符,所以数组元素的个数就必须多一些
因为s[0],s[1]等都是字符串(字符数组),所以将它们传入scanf函数时不可以带&运算符(在学到指针与数组的关系中可以得知数组名原则上可以被解释为指向该数组起始元素的指针,所以不能加上&。&在访问的是该元素的地址,当然这只是我目前学习阶段的浅薄理解)。