一、字符数组的 定义
一维字符数组:用于存储和处理 1 个字符串 ,其定义格式与一维数值数组一样。
char str[20];
二维字符数组:用于同时存储和处理多个字符串 ,其定义格式与二维数值数组一样。
char country[10][20];
country: 第 i 个字符串
二.字符数组的 初始化
字符数组的初始化 .
1.可以通过为每个数组元素指定初值字符来实现。
char str[10]={ 'I',' ','a','m',' ', ‘h ’ ,'a','p','p','y'};
char str[ ]={"I am happy"}; 可以省略花括号,如下所示
char str[ ]="I am happy";
char country[10][20]={ “china ” , ”japanese ” , …… };
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用, 不能用于字符数组的赋
值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
char str[15];
str="I am happy";
strcpy(str, "I am happy");
不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号 “”而不是单
引号 ‘’括起来的)作为初值。
‘a ’区别“a ”
三、 字符数组的引用
字符数组的逐个字符引用,与引用数值数组元素类似。
(1)字符数组的输入
除了可以通过初始化使字符数组各元素得到初值外,也可以使用 getchar()或 scanf()函数
输入字符。
例如:
char str[10] ;
…… for(i=0; i<10; i++)
{ scanf(\"%c\", &str) ;
fflush(stdin); /* 清除键盘输入缓冲区 */
}
……
(2 )字符数组的输出
字符数组的输出,可以用 putchar() 或 printf() 函数。
例如:
char str[10]=\"c language\";
……
for(i=0; i<10; i++) printf(\"%c\", str) ;
printf(\"\\n\");
……
注意:逐个字符输入、输出时,要指出元素的下标,而且使用 “%c格式符。另外,从键”
盘上输入字符时, 无需输入字符的定界符──单引号; 输出时,系统也不输出字符的定界符。
字符数组的整体操作
[ 案例 ] 字符数组的整体输入与输出。
/* 功能:将 2 维字符数组进行初始化,并在屏幕上输出 */
main()
{ int i;
char name[5][9]={" 张三山 ", " 李四季 ", " 王五魁 ", " 刘六顺 ", " 赵七巧 "};
for(i=0;i<5;i++)
printf("\\n%s\\t",name); /*name 代表该行数组元素的首地址 */
}
1.字符串及其结束标志
所谓字符串,是指若干有效字符的序列。 C 语言中的字符串,可以包括字母、数字、专用字
符、转义字符等。
C 语言规定: 以 ‘0 ’作为字符串结束标志 ( ‘0 ’代表 ASCII 码为 0 的字符,表示一个 “空操作 ”,
只起一个标志作用) 。因此可以对字符数组采用另一种方式进行操作了──字符数组的整体
操作。
注意: 由于系统在存储字符串常量时, 会在串尾自动加上 1 个结束标志, 所以无需人为地再
加 1 个。
另外, 由于结束标志也要在字符数组中占用一个元素的存储空间, 因此在说明字符数组长度
时,至少为字符串所需长度加