C 速查手冊

1.5 字串

C 語言的字串 (string) 也屬於常數 (constant) 的一種,其是用雙引號圍起來的連續字元 (character) ,如

"Hello"
"333-3333"
"Sherry Wang"
"No.3333, Zhongzheng Rd."

連續幾個字串前後無須任何運算子 (operator) ,字串會自動連接起來

"Hello" " " "world" "!"

注意,以上四個字串中有一個字串只含一個空格符號,這樣字串會自動連接為一個字串,如下

"Hello world!"

而完全不含任何字元的字串稱為空字串 (empty string)

"" //這是一個空字串

實際上空字串仍是包含一個字元

'\0'

這是字串的結束字元, '\0' 不會被計算在字串的長度內,但每個字串都會自動附加上 '\0' ,作為字串結束的標記。

字串也就是連續字元的集合,字元型態為 C 語言的基本資料型態之一, C 語言預設可直接使用 ASCII 編碼的符號,因此字串其實是許多字元型態的資料集合體,這樣同質的資料結構 (data type) ,在 C 語言中是陣列 (array) ,所以

"Hello"

等同於以下的字元陣列

['H', 'e', 'l', 'l', 'o', '\0']

如此便可將字串用字元陣列來處理

char greet[] = "Hello";
char phonenumber[] = "333-3333";
char name[] = "Sherry Wang";
char address[] = "No.3333, Zhongzheng Rd.";

由於陣列的名稱也就是指標 (pointer) ,因此也可直接用指標指向字串的第一個字元

char *greet = "Hello";
char *phonenumber = "333-3333";
char *name = "Sherry Wang";
char *address = "No.3333, Zhongzheng Rd.";

兩者的差別在於陣列可直接用索引處理其內的字元,而利用指標須做算術運算。

若是字串中要儲存某些不可見字元,或是雙引號本身,這時候就要用到跳脫序列了。以下的字串附加印出新行的符號

"Hello\n"
"333-3333\n"
"Sherry Wang\n"
"No.3333, Zhongzheng Rd.\n"

以下的字串加入雙引號

"\"Hello\""
"\"333-3333\""
"\"Sherry Wang\""
"\"No.3333, Zhongzheng Rd.\""

反斜線也需要用跳脫序列來表示

"Hello\\n"
"333-3333\\n"
"Sherry Wang\\n"
"No.3333, Zhongzheng Rd.\\n"

以下是跳脫序列的完整列表

跳脫序列的字元功能
\a響鈴
\b倒退鍵
\f跳頁
\n印出新列
\r歸位符號
\ttab 鍵
\v垂直定位符號
\\印出反斜線
\?印出問號
\'印出單引號
\"印出雙引號

上一頁 1.4 常數
回 C 速查手冊首頁
下一頁 1.6 運算子
回 C 教材首頁
回程式語言教材首頁