一、字符数组
字符数组的定义和引用符合前面所学过的数组的定义和引用方法。
例如:
char a[5] ; //定义一个一维字符数组
char b[2][3] ; //定义一个二维字符数组
char c[2][3][4] ; //定义一个三维字符数组
a[3] = ‘a’ ; //一维字符数组元素赋值
b[1][2] = ‘b’ ; //二维字符数组元素赋值
我们一起看一道例题:
输入一行字符,统计其中大写字母的个数,并将所有的大写字母转换成小写字母后输出这个字符串。
//FileName: chap4_12.c
#include<stdio.h>
int main( )
{
int i,n=0;
char s[20];
for(i=0;(s[i]=getchar())!='\n';i++)
if(s[i]>='A' && s[i]<='Z')
n++;
printf("n=%d\n",n);
for(i=0;s[i]!='\n';i++)
if(s[i]>='A' && s[i]<='Z')
printf("%c",s[i]+32);
else
printf("%c",s[i]);
return 0;
程序运行结果如下:
abCdeFGh↙
n=3 abcdefgh
二、用字符数组存储字符串
字符串常量就是用双引号括起来的若干个字符。例如, “China”。但实际上,在内存中存储这个字符串常量时,除 了要存储我们看到的字符外,还要在这些字符后存存储一个 ‘\0’作为字符串的结束标志。
由于有了字符串结束标志’\0’的存在,字符串常量“China”的字符串长度虽然只有5,但在内存中却要占6个存储单元。 我们可以利用字符数组存放字符串,C语言允许用户在定义字符数组时,将字符串常量作为初值赋给字符数组。例如:
char str[]=”China”;
等价于
char str[]={“China”};
也等价于
char str[]={’C’,’h’,’i’,’n’,’a’,’\0’};
单元素处理
char str[6];
for(i=0;i<6;i++)
scanf(“%c”,&str[i]);
for(i=0;i<6;i++)
printf(“%c”,str[i]);
以格式符%s通过数组名引用
char str[6];
scanf(“%s”,str);
printf(“%s”,str);