[C 語言] 程式設計教學:如何使用C 字串(String) | c字串處理
前言學完陣列和指標後,就有足夠的預備知識學習C字串。C語言沒有獨立的字串型別,而C字串是以char或其他字元(character)為基礎型別的陣列,所以要有先前文章的鋪陳才容易學習C字串。C語言的字串方案在C語言中,常見的字串方案有以下數種:固定寬度字元陣列字元陣列(characterarray)寬字元陣列(widecharacterarray):使用wchar.h函式庫多字節編碼(multibyteencodings),像是Big5(大五碼)或GB2312等統一碼(Unicode):包括UTF-8、UTF-16、UTF-32等有些方案為等寬字元,有些方案則採不等寬字元編碼。原本的字元陣列僅能處理英文文字,其他...
前言學完陣列和指標後,就有足夠的預備知識學習 C 字串。C 語言沒有獨立的字串型別,而 C 字串是以 char 或其他字元 (character) 為基礎型別的陣列,所以要有先前文章的鋪陳才容易學習 C 字串。
C 語言的字串方案在 C 語言中,常見的字串方案有以下數種:
固定寬度字元陣列 字元陣列 (character array) 寬字元陣列 (wide character array):使用 wchar.h 函式庫 多字節編碼 (multibyte encodings),像是 Big5 (大五碼) 或 GB2312 等 統一碼 (Unicode):包括 UTF-8、UTF-16、UTF-32 等有些方案為等寬字元,有些方案則採不等寬字元編碼。原本的字元陣列僅能處理英文文字,其他方案則是為了處理多國語文文字而産生的。
例如,在支援 Unicode 的終端機環境,可以透過 wchar_t 印出中文字串:
#include <locale.h> #include <wchar.h> int main(void) { // Trick to print multibyte strings. setlocale(LC_CTYPE, ""); wchar_t *s = L"你好,世界"; printf("%ls ", s); return 0; }由於本文的目的是了解字串的基本操作,我們仍然是以原先的字元陣列為準,本文不考慮多國語言的情境。
C 字串微觀我們由 "Hello World" 字串來看 C 字串的組成:
由上圖可知,C 字串除了依序儲存每個字元外,在尾端還會額外加上一個 字元,代表字串結束。由於 C 字串需要尾端的 字元來判斷字串結束,我們在處理字串時,別忘了在字串尾端加上該字元。
接下來,我們會介紹數個字串操作的情境。由於 C 標準函式庫已經有 string.h 函式庫,在採作字串時應優先使用該函式庫,而非重造輪子;本文展示的程式僅供參考。
計算 C 字串長度計算字串長度時,不包含尾端的結束字尾,所以 C 字串 "happy" 的...