複製鏈接
請複製以下鏈接發送給好友

字符數組

鎖定
字符數組是指用來存放字符數據的數組。其定義的一般形式為: char 數組名[數據長度] 。字符數組用於存放字符或字符串,字符數組中的一個元素存放一個字符,它在內存中佔用一個字節。C語言中沒有字符串類型,字符串是存放在字符型數組中的。
中文名
字符數組
外文名
character array
例    如
char a[10]
釋    義
用來存放字符數據的數組
作    用
存放字符或字符串
類    別
計算機軟件術語

字符數組定義

用來存放字符數據的數組稱為字符數組。字符數組中的一個元素存放一個字符。定義字符數組的方法與定義數值型數組的方法類似。
其定義的一般形式是:char 數組名[數據長度]
例如:
char c[10];
c[0]='I'; c[1]=' '; c[2]='l'; c[3]='o'; c[4]='v'; c[5]='e'; c[6]=' '; c[7]='y'; c[8]='o'; c[9]='u';
以上定義了c為字符數組,包含10個元素。
由於字符型數據是以整數形式(ASCII代碼)存放的,因此也可以用整型數組來存放字符數據,例如:
int c[10];
但這時每個數組元素佔2個字節的內存單元,浪費存儲空間。 [1] 
字符數組也可以是二維或多維數組,例如:
char c[5][10];
即為二維字符數組。

字符數組初始化

字符數組的初始化與數值型數組初始化沒有本質區別。但它除了可以逐個給數組元素賦予字符外,也可以直接用字符串對其初始化。
(1)用字符常量逐個初始化數組。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
把8個字符依次分別賦給c[0]~c[7]這8個元素。
如果在定義字符數組時不進行初始化,則數組中各元素的值是不可預料的。如果花括號中提供的初值個數(即字符個數)大於數組長度,則出現語法錯誤。如果初值個數小於數組長度,則只將這些字符賦給數組中前面那些元素,其餘的元素自動定為空字符(即'\0')。如果提供的初值個數與預定的數組長度相同,在定義時可以省略數組長度,系統會自動根據初值個數確定數組長度。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
這時c數組的長度自動定為9。
也可以定義和初始化一個二維字符數組,例如:
char diamond[5][5]={{' ',' ','#'},{' ','#',' ','#'},
{'#',' ',' ',' ','#'},{' ','#',' ','#'},{' ',' ','#'}};用它代表一個菱形的平面圖形。
(2)字符串常量初始化數組。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
可寫為:
char c[ ]={"C program"};
或去掉{}寫為:
char c[ ]="C program";
注意:此時數組c的長度不是9,而是10。因為字符串常量的最後由系統加上一個'\0'。上面的初始化與下面的初始化等價。
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m','\0'}; [1] 

字符數組元素的引用

可以通過引用字符數組中的一個元素,得到一個字符。
數組的引用形式為:
數組名[下標]
【例5-8】輸入“I like playing basketball”並顯示出來。
#include<stdio.h>
int main(void)
{
char a[26]="I like playing basketball";
int i;
for(i=0;i<26;i++)
printf("%c",a[i]);
}
運行結果為:I like playing basketball [2] 

字符數組結束標誌

字符串和字符串結束標誌
在C語言中,是將字符串作為字符數組來處理的。為了測定字符串的實際長度,C語言規定了一個“字符串結束標誌”,以字符'\0'作為結束標誌 [1] 

字符數組輸入輸出

  1. 字符數組的輸入
    (1)用getchar()或scanf()的'%c'格式符對數組進行字符賦值。例如,對於數組a[10]:用getchar()賦值:
    for(i=0;i<10;i++)
    a[i]=getchar();
    用scanf()賦值:
    for(i=0;i<10;i++)
    scanf("%c",&a[i]);
    (2)用scanf()的'%s'格式對數組賦值。還是對於數組a[10]:
    scanf("%s",a);
    scanf("%s“,&a[0]);
    輸入”C program“並回車時,a數組會自動包含一個以”\0“結尾的字符串”C program“。
  2. 字符數組的輸出
    (1)用putchar()或printf()的‘%c’格式符對數組進行字符賦值。例如,對於數組a[10]:用putchar()賦值:
    for(i=0;i<10;i++)
    a[i]=putchar();
    用printf()賦值:
    for(i=0;i<10;i++)
    printf("%c",a[i]);
    輸出結果為:
    c program [2] 
    (2)用printf()的'%s'格式對數組賦值。還是對於數組a[10];
    printf("%s",a);
    輸出結果為:
    c program

字符數組應用舉例

例6.8 輸入一行字符,統計其中有多少個單詞,單詞之間用空格分隔開。
#include<stdio.h>
  void main()
  {
  char string[81];
  int i,num=0,word=0;
  char c;
  gets(string);
  for(i=0;(c=string[i])!='\0';i++)
  if(c==' ') word=0;
  else if(word==0)
  {
  word=1;
  num++;
  }
  printf("There are %d words in this line.\n",num);
}
運行結果
I am a boy.
There are 4 words in this line. [1] 
參考資料
  • 1.    譚浩強.C程序設計(第四版):清華大學出版社,2010:154-166
  • 2.    汪文立.二級C語言程序設計教程:中國水利水電出版社,2006:76-79