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
这个函数