string.h 的总体内容

string.h 中定义了一系列的处理字符串的函数,如 strchr 等,以及一系列处理自己的函数 memcmp

string.hstrings.h 的区别

  • string.hC 的标准库
  • strings.h 不是 C 的标准库,strings.h 是从 BSDUNIX 中继承过来的
  • strings.h 里面定义了 bzero, bcmp, bcpy, index, rindex 等函数。

这些函数应该被 mem_ 类函数替代:

bzero
bcmp
bcpy
char* index(const char* s, int c) 字符 c 在 字符串 s 中第一次出现的位置
char* rindex(const char* s, int c) 最后一次出现的位置

string.h 的内容

这个头文件暴露了一系列的用于操作字符串的函数,包括:

1. 处理字符串的函数
char *strcat(char *dest, const char *src) srv 追加到 dst 的结尾
strncat
char *strchr(const char *str, int c) 搜索字符第一次出现的位置
strrchr
strcmp
strncmp
int strcoll(const char *str1, const char *str2) 根据 LC_COLLATE 的设置,比较两个字符串的大小
strcpy
strncpy
strerror
strlen
strpbrk
size_t strspn(const char *str1, const char *str2) 字符串 str1 中第一个不在字符串 str2 中出现的字符下标
strcspn
strstr 查找子串
strtok 按照字符分割字符串
strxfrm

2. 处理字节的函数
memchr
memcmp
memcpy
memmove
memset

学习 string.h 这个库的使用

strtok 的使用

  1. str* sub; // 用于存放子串
  2. str* str; // 被切分的字符串
  3. for (sub = strtok(str, ","); sub; sub = strtok(NULL, ",")) {
  4. }

注: strtok 是不安全的,并发情况下可能会出问题,应该使用 strtok_r 这个函数