C 並沒有一個稱作「字串」的資料型態,但是它卻有一個稱作「字串」的輸出格式。 C 語言有一個隱喻 (imply) 的字串 (string) 資料型態,就是
String: 以 '\0' 字元作為結束符號的 char 序列以下是個利用字串輸出格式的例子。
#include <stdio.h> /* 示範 %s 輸出格式 (printf-string.c) */ main() { char h[14]; h[0]='h'; h[1]='e'; h[2]=h[3]=h[10]='l'; h[4]=h[8]='o'; h[5]=','; h[6]=' '; h[7]='w'; h[9]='r'; h[11]='d'; h[12]='.'; h[14]='\0'; printf("%s\n", h); return 0; }
h[14]=0;但是還是建議大家寫
h[14]='\0';因為後者的意義更為明顯:代表一個字串的結束。
讀者可以看到,若 h[] 定義了一個字串, 則 printf() 可以用比較簡潔的語法來輸出這個字串。
C 語言將放在一對 " " 內的字元, 視為一個常數字串 (string constant)。 就好像 35 是一個常數一樣。 例如 "hello" 是一個常數字串,它是由
'h' 'e' 'l' 'l' 'o' '\0'六個字元所組成。注意最後有一個零字元。因此,
'c' 和 "c"是不一樣的。'c' 是一個字元,但是 "c" 有兩個字元:
"c" 代表 'c' 和 '\0' 組成的 char 序列
我們可以直接用常數來定義一個變數的值,例如說
int n;但是,常數字串是一個序列,而序列之間是不能直接用 = 號來做設定的。 所以,我們不能說
n = 35;
char s[6];那麼,豈不是每次要定義一個字串的時候,都要一個字元一個字元地定義嗎? 也不至於這麼麻煩,但是我們保留這個問題到稍後再談。
s = "hello";
在這一節的範例中,我們宣告 h[] 的維度與 "hello, world." 的長度相同 (含零字元)。一般而言,這是不必要的。 字串的長度 (含零字元),只要不超過儲存它的 char 序列維度即可。
習題
注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。
Created: Apr 4, 2000
Last Revised: Apr 4, 2000
© Copyright 2000 Wei-Chang Shann 單維彰