C和指標 第九章 字串 字元 位元組

2022-04-16 14:16:08 字數 1521 閱讀 2875

c語言中沒有字串型別,字串是以nul結尾的字元陣列組成的。

高階字串查詢:

//計算字串起始部分,有多少字元是在group中

size_t strspn(char const * str, char const *group);

//不在group中

size_t strcspn(char const * str, char const *group);

示例:

#include #include int main()

輸出6 和 1

//sep

char * strpok(char * str, char const *sep);

示例:#include #include int main()

; char str2[strlen(str1)];

strcpy(str2, str1);

char *token;

char sep[2] = "g";

for(token = strtok(str2, sep); token != null; token = strtok(null, sep))

printf("\n");

printf("str1 %s\n", str1);

printf("str2 %s\n", str2);

return 0;

}

strtok的第乙個引數不是null,函式將查詢到字串中的第乙個標記。strtok同時儲存它在字串中的位置,如果第乙個引數是null,函式就在同乙個字串中儲存的位置開始像前面一樣查詢下乙個標記,如果沒有更多標記返回null,否則返回字串指標。strtok會修改字串。

記憶體操作函式:

由於字串是\0字元結尾的,如果字串內有nul那麼就需要使用記憶體操作函式。

//從src開始的位置拷貝length個位元組到dst記憶體起始位置

void *memcpy(void *dst, void const *src, size_t length);

//memmove和memcpy差不多,源和目的地可以重疊,memmove先把源拷貝到臨時位置,然後再拷貝回來

void *memmove(void *dst, void const *src, size_t length);

//memcmp,和memchr分別是比較和查詢

void *memcmp(void *dst, void const *src, size_t length);

void *memchr(void *dst, void const *src, size_t length);

//memset將從src開始的length個字元設定成ch

void *memset(void *src, int ch, size_t length);

函式中引數型別都是void *,任何型別都可以轉換成void *.

#include #include int main()

執行結果: 

第九章 字串,字元和位元組

1.nul位元組是字串終止符,但它本身並不是字串的一部分,所以字串的長度並不包括nul位元組。2.size t這個型別是在標頭檔案stddef.h中定義的,返回長度。3.連線字串 strcat strcpy message,hello strcat message,customer name str...

第九章 Lua字串

1.lua 語言中字串可以使用以下三種方式來表示 string1 lua string2 runoob.com string3 lua 教程 2.字串轉義符 a b f n r t v 0 ddd xhh 3.字串操作方法 string.upper string 轉為大寫字母。string.lowe...

c 基礎 (第九章)

結構體型別說明 struct 結構體識別符號 成員變數列表 如果沒有結構體識別符號,則稱為無名結構體型別 引用結構體變數成員 l 結構體變數名.成員名 l 結構體指標名 成員名 l 結構體指標名 成員名 共用體共用體所有變數共用一塊記憶體 定義格式如下 union 共用體識別符號 成員變數列表 列舉...