第9章 字串、字元和位元組

2020-08-12 23:25:06

C語言並沒有顯式的字串數據型別,因爲字串以字串常數的形式出現或者儲存於字元陣列中。

NUL位元組是字串的終止符,但它本身並不是字串的一部分,所以字串的長度並不包括NUL位元組。

(1)求字串長度:strlen
(2)複製字串:strcpy
程式設計師必須保證目標字元陣列的空間足以容納需要複製的字串。如果字串比陣列長,多餘的字元仍被複制,它們將覆蓋原先儲存於陣列後面的記憶體空間的值。strcpy無法解決這個問題,因爲它無法判斷目標字串陣列的長度。
(3)連線字串:strcat
(4)字串比較:strcmp
如果s1小於s2,函數返回一個小於零的值,如果s1大於s2,則返回一個大於零的值,如果兩個字串相等,函數返回零。
標準庫還包含了一些函數,它們以一種不同的方式處理字串。這些函數接受一個顯式的長度參數,用於限定進行復制或比較的字元數。這些函數提供了一種方便的機制 機製,可以防止難以預料的長字串從它們的目標陣列溢位。如果strlen(src)的值小於len,dst陣列就用額外的NUL位元組填充到len長度。如果strlen(src)的值大於或等於len,那麼只有len個字元被複制到dst中。注意,它的結果將不會以NUL結尾。
(5)在一個字串中查詢一個特定字元最容易的方法是使用strchr和strrchr函數
(6)查詢任何幾個字元:strpbrk
(7)查詢一個子串:strstr
(8)strspn和strcspn函數用於在字串的起始位置對字元計數
(9)查詢標記:strtok,它從字串中隔離各個單獨的稱爲標記的部分並丟棄分隔符
(10)strerror函數把一個錯誤程式碼作爲參數並返回一個指向用於描述錯誤的字串的指針
(11)字元分類:iscntrl,isspace,isdigit,isxdigit,islower,isupper,isalpha,isalnum,ispunct,isgraph,isprint
(12)字元轉換:tolower,toupper
(13)記憶體操作:memcpy,memmove,memcmp,memchr,memset