string.h¶
string.h 中的功能, 与其说是处理字符串, 不如说是在处理字节数组, 像复制一块内存之类的函数.
如果想要格式化字符串, 需要使用 stdio.h 中的 sprintf()
函数.
函数¶
内存区域¶
-
void *
memchr
(const void *str, int ch, size_t size)¶ 在 str 所指的内存区域前 size 字节中查找第一个出现 ch 字节的位置
返回: 第一次出现 ch 的地址 (包括此字节)
-
int
memcmp
(const void *a, const void *b, size_t size)¶ 比较 a, b 的前 size 个字节. 从低位到高位一个字节一个字节地比较, 当低位出现一个较小的字节时, 判断为小于, 以此类推.
返回: - -1, 表示 a < b
- 0, 表示 a == b
- 1, 表示 a > b
-
void *
memcpy
(void *dest, const void *src, size_t size)¶ 从 src 到 dest 复制前 size 个字节.
参数: - src – 源内存区域
- dest – 目标内存区域
- size – 将复制的字节数目
-
void *
memmove
(void *dest, const void *src, size_t size)¶ 从 src 移动 size 个字节到 dest 中. 如果 dest 与 src 在 size 字节内有重叠, 则此函数将保证 dest 被正确的修改, 而 src 函数可能被更改. 否则此函数作用与
memcpy()
相同.
-
void *
memset
(void *dest, int ch, size_t size)¶ 将 dest 的前 size 字节用 ch 填充. 这个函数也常用于设置其他类型的数组.
参数: - ch – ch 虽然用 int 类型传入, 但是实际却是当作 unsigned int 类型.
字符串¶
-
char *
strcat
(char *dest, const char *src)¶ 将 src 追加到 dest 后. dest 是一个 C-style 字符串, 要求能够容纳追加后的字符串.
返回: dest 的地址
-
char *
strncat
(char *dest, const char *src, size_t n)¶ 将 src 追加到 dest 后. dest 是一个 C-style 字符串, 要求能够容纳追加后的字符串. 最多追加 n 个字节.
参数: - n (size_t) – 最大追加的字节数
返回: dest 的地址
-
char *
strchr
(const char *str, int ch)¶ 在参数 str 所指的字符串中搜索第一次出现字符 ch 的位置
参数: - ch – 虽然以 int 类型传入, 但是实际上用作 unsigned int 类型.
返回: 返回 ch 出现的地址(包括此字符)
-
char *
strrchr
(const char *str, int ch)¶ 搜索 str 中最后一次出现字符 ch 的地址.
-
size_t
strcspn
(const char *a, const char *b)¶ 搜索 a 中第一次出现 b 中字符的位置. 返回的是偏移量, 基准位置是 a 的首地址.
返回: b 中包含的字符第一次在 a 中出现的地址偏移量
-
size_t
strspn
(const char *a, const char *b)¶ 在 a 中检索第一个不在 b 中出现的字符的地址偏移量
-
char *
strpbrk
(const char *a, const char *b)¶ 类似于
strcspn()
, 在 a 中检索 b 中的字符, 返回第一次出现的字符的地址.返回: b 中包含的字符第一次在 a 中出现的地址
-
char *
strstr
(const char *str, const char *target)¶ 在 str 中搜索第一次出现 target 字串的地址.
-
char *
strtok
(char *str, const char *delimeter)¶ 将 str 拆分成子字符串, delimeter 作为分隔符. 一次调用将会返回一个子串, 当字符串无法再被拆分将会返回 NULL.
参数: - delimeter – 分隔符
返回: 一次调用返回一个子串, 当无法继续拆分时返回 NULL.
-
char *
strcmp
(const char *a, const char *b, size_t n) 类似于
memcmp()
, 但只针对字符串, 比较前 n 个字节.
-
char *
strcpy
(char *dest, const char *src)¶ 将 src 复制到 dest
-
char *
strncpy
(char *dest, const char *src, size_t n)¶ 将 src 复制到 dest, 最多 n 个字节.
-
char *
strerror
(int errno)¶ 传入 C 错误码, 在内部数组中搜索并返回对应的错误信息.
参数: - errno – 常用 errno.h 中的 errno 宏.
返回: 错误码对应的字符串消息
-
size_t
strlen
(const char *str)¶ 返回 str 的长度, 单位字节. 以
\0
结束.
-
size_t
strxfrm
(char *dest, const char *src, size_t n)¶ 根据 LC_COLLATE 区域设置 [2] , 将 src 转换, 并将结果存入 dest 中.
[2] | (1, 2) 参考 https://zh.cppreference.com/w/c/locale/LC_categories, 定义在 locale.h 中. |