本页目录

2. 字符数组

发布时间:

字符数组

字符数组是指元素为字符的数组。字符数组是用来存放字符序列或字符串的。字符数组有一维和多维之分。

一 、 定义

  [存储类型] char 数组名[常量表达式1]…

js
char ch1[5];                //数组ch1是一个具有5个字符元素的一维字符数组
   

  字符数组定义格式同于一般数组,所不同的是数组类型是字符型,第一个元素同样是从ch1[0]开始,而不是ch1[1]。     

二、 初始化

js
char chr1[5]={'a','b','c','d','e'};   //始值个数少于元素个数时,从首元素开始赋值,剩余元素默认为空字符
char chr2[5]={'a','b','c','d','\0'}; //即在数组chr2中存放着一个字符串“abcd”。
char chr3[5]="abcd";// 与char2 完全相同。
char chr4[5]={‘a’,'\0','\0','\0','\0'}; 
char chr5[5]={‘a’};// 与char4 完全相同。
char chr6[5]={‘\0’,'\0','\0','\0','\0'}; 
main()前面定义  char chr7[5];//与char6完全相同。
char chr3[3][4]={"abc","mno","xyz"};在数组ch3中存放3个字符串,每个字符串的长度不得大于3。
   

三、 元素赋值

    字符数组的赋值是给该字符数组的各个元素赋一个字符值。例如:

js
   char chr[3];
   chr[0]=‘a’; chr[1]=‘b’;chr[2]=‘c’;
   

对二维、三维字符数组也是如此。当需要将一个数组的全部元素值赋予另一数组时,不可以用数组名直接赋值的方式,要使用字符串拷贝函数来完成。

  (4).字符常量和字符串常量的区别

①两者的定界符不同,字符常量由单引号括起来,字符串常量由双引号括起来。
②字符常量只能是单个字符,字符串常量则可以是多个字符。
③可以把一个字符常量赋给一个字符变量,但不能把一个字符串常量赋给一个字符变量。
④字符常量占一个字节,而字符串常量占用字节数等于字符串的字节数加1。增加的一个字节中存放字符串结束标志‘\0’。例如:字符常量‘a’占一个字节,字符串常量“a”占二个字节。

  (5).用getchar()获取连续字符包括空格

三 综合运用

【例5.16】过滤空格
过滤多余的空格。一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。

输入样例

js
Hello      world.This is    c language.
   

输出样例

js
Hello world.This is c language.
   
js

#include <iostream>
using namespace std;
int main() {  // 【例5.16】过滤空格
   int i = 0;
   char a[1000];
   memset(a, '0', sizeof(a));
   a[0] = getchar();
   char b ;
   do {
         b = getchar();
       if (b == ' ' &&a[i]==' '){
       }else{
           a[++i]=b;
       }
   } while (b!='\n');
    a[++i]='\0';//字符数组存字符串,添加’\0‘结尾标志。
   cout << a;
   return 0;
}