string.h 的总体内容
string.h 中定义了一系列的处理字符串的函数,如 strchr 等,以及一系列处理自己的函数 memcmp 等
string.h 和 strings.h 的区别
string.h是C的标准库strings.h不是C的标准库,strings.h是从BSD系UNIX中继承过来的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 的使用
str* sub; // 用于存放子串str* str; // 被切分的字符串for (sub = strtok(str, ","); sub; sub = strtok(NULL, ",")) {}
注: strtok 是不安全的,并发情况下可能会出问题,应该使用 strtok_r 这个函数
