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 | 歸位符號 |
\t | tab 鍵 |
\v | 垂直定位符號 |
\\ | 印出反斜線 |
\? | 印出問號 |
\' | 印出單引號 |
\" | 印出雙引號 |