c和指標》學習筆記4之字串

2021-09-26 08:37:36 字數 1457 閱讀 3615

1 字串基礎

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

(1)字串長度

size_t strlen(char const * string)注意這裡返回的是size_t,它是乙個無符號整數型別,在表示式中使用無符號數可能導致不可預料的結果。例如

if(strlen(x)-strlen(y)>=0)這個表示式將會永遠真 成立。

(2)不受限制的字串函式

使用不受限制的函式之前,必須確定字串實際上是以nul位元組結尾

char *strcpy(char *dst,char const *src) 

注意:無法保證目標字元陣列有足夠的空間容納需要複製的字串

char *strcat(char *dst,char const *src)

int strcmp(char const *s1,char const *s2)

s1小於s2 返回乙個小於0的

s1大於s2 返回乙個大於0的

鑑於上面三種可能導致長度不夠引出錯誤,出現了對應有長度限制的介面函式

char *strncpy(char* dest,char const*src,size_t len)

char *strncat(char* dest,char const*src,size_t len)

int strncmp(char const *s1,char const*s2,size_t len)

2 字串查詢基礎

(1)在乙個字串中查詢乙個特定字元

char *strstr(char const *str,int ch)

char *strrchr(char const *str,int ch)

(2) 查詢任何幾個字元

char *strpbrk(char const *str,char const *group)

返回乙個指向str中第乙個匹配group中任何乙個字元的字元位置。

(3)查詢乙個字串

char *strstr(char const*s1,char const *s2)

(4)查詢標記

char *strtok(char *strr,char const *sep)

從字串中隔離各個單獨的稱為標記的部分並丟棄分隔符。

2 記憶體操作

之前說過,字串是以nul字元結尾的,也就是說上面的函式處理字串中內部有nul的情況就不是那麼方便了,就出現了如下函式。可以處理任意的位元組序列

void *memcpy(void* dest,void const *src,size_t length) 從src起始位置賦值length個位元組到dst的記憶體起始位置

void memove(void *dest,void const *src,size_t length)

void memcmp(void const *a,void const *b,size_t length)

字串 C 學習筆記之 字串和字串流

字元陣列,也就是存放字元型別資料的陣列,只不過字元陣列的結尾必須是 0 c 已經提供了一些字串處理函式,這些函式被封裝在標頭檔案和 中。此外,為了更方便地對字串進行操作,c 中定義了乙個 string 類,可以在使用的時候包含標頭檔案。此外,可以用乙個字串類變數或者字元陣列或者字元直接對字串類變數進...

c學習之指標與字串

字串可以用陣列 指標常量 或指標變數表示,如下 char str1 hello world 事實上是把字串的位址賦給指標或變數 char str2 12 hello world 注意 陣列只能在定義時賦初值。若寫成char str2 12 str2 12 hello world 是錯誤的。鍵盤輸入 ...

學習筆記之13 指標和字串

乙個字串由乙個或多個字元組成,因此我們可以用字元陣列來存放字串,不過在陣列的尾部要加上乙個空字元 0 char s mj 上面的 定義了乙個字元陣列s來儲存字串 mj 系統會自動在尾部加上乙個空字元 0 記憶體分布大致如右圖所示 指標和陣列的關係非常密切,因此也可以使用指標來操作字串。1 定義乙個指...